Scrapping Tor: python keyword input file, output file
Jump to navigation
Jump to search
Berikut adalah panduan langkah demi langkah untuk melakukan web scraping melalui jaringan Tor di Kali Linux 2024.4, dengan kata kunci yang diambil dari file dan hasil yang disimpan ke dalam file.
Persiapan:
1. Instalasi Tor dan Dependensi:
- Perbarui sistem Anda:
sudo apt update && sudo apt upgrade
- Instal Tor dan pustaka Python yang diperlukan:
sudo apt install tor python3-pip pip3 install requests[socks] beautifulsoup4 stem pandas
2. Konfigurasi Tor:
- Edit file konfigurasi Tor:
sudo nano /etc/tor/torrc
- Tambahkan baris berikut untuk mengaktifkan port kontrol dan otentikasi cookie:
ControlPort 9051 CookieAuthentication 1
- Simpan perubahan dan mulai layanan Tor:
sudo systemctl start tor sudo systemctl enable tor
3. Persiapan File Kata Kunci: Buat file teks bernama `keywords.txt` yang berisi daftar kata kunci, satu per baris. Contoh:
berita teknologi tutorial python keamanan siber
Implementasi Kode Python:
Berikut adalah skrip Python yang membaca kata kunci dari `keywords.txt`, melakukan pencarian web melalui Tor, dan menyimpan hasilnya ke dalam file CSV:
import os import time import requests from bs4 import BeautifulSoup from stem import Signal from stem.control import Controller import pandas as pd # Fungsi untuk memuat kata kunci dari file def load_keywords(filename): with open(filename, 'r', encoding='utf-8') as f: return [line.strip() for line in f if line.strip()] # Fungsi untuk memperbarui identitas Tor (IP baru) def renew_tor_ip(): with Controller.from_port(port=9051) as controller: controller.authenticate() controller.signal(Signal.NEWNYM) # Fungsi untuk membuat sesi dengan proxy Tor def get_tor_session(): session = requests.Session() session.proxies = { 'http': 'socks5h://127.0.0.1:9050', 'https': 'socks5h://127.0.0.1:9050' } return session # Fungsi untuk melakukan pencarian web dan mengembalikan URL hasil def search_web(keyword, num_results=5): session = get_tor_session() query = '+'.join(keyword.split()) url = f"https://www.google.com/search?q={query}" response = session.get(url) soup = BeautifulSoup(response.text, 'html.parser') results = [] for item in soup.find_all('h3'): parent = item.find_parent('a') if parent and parent['href'].startswith('/url?q='): link = parent['href'].split('/url?q=')[1].split('&')[0] results.append(link) if len(results) >= num_results: break return results # Fungsi untuk mengunjungi URL dan mengambil konten def scrape_content(url): session = get_tor_session() response = session.get(url) soup = BeautifulSoup(response.text, 'html.parser') title = soup.title.string if soup.title else 'No Title' paragraphs = soup.find_all('p') content = ' '.join([p.get_text() for p in paragraphs[:5]]) return title, content # Fungsi utama untuk proses scraping def main(): keywords = load_keywords('keywords.txt') all_results = [] for keyword in keywords: print(f"Mencari: {keyword}") renew_tor_ip() time.sleep(10) # Tunggu agar IP baru aktif urls = search_web(keyword) for rank, url in enumerate(urls, start=1): print(f" Mengambil: {url}") try: title, content = scrape_content(url) all_results.append({ 'Keyword': keyword, 'Rank': rank, 'Title': title, 'URL': url, 'Content': content }) except Exception as e: print(f" Gagal mengambil konten dari {url}: {e}") time.sleep(5) # Delay antara permintaan # Simpan hasil ke file CSV df = pd.DataFrame(all_results) df.to_csv('scraping_results.csv', index=False, encoding='utf-8') print("Hasil disimpan dalam 'scraping_results.csv'.") if __name__ == '__main__': main()
Penjelasan Kode:
- load_keywords: Membaca kata kunci dari file `keywords.txt`.
- renew_tor_ip: Memperbarui identitas (IP) Tor untuk menghindari pemblokiran.
- get_tor_session: Membuat sesi HTTP yang melewati proxy Tor.
- search_web: Melakukan pencarian Google untuk kata kunci tertentu dan mengembalikan daftar URL hasil.
- scrape_content: Mengunjungi URL dan mengambil judul serta lima paragraf pertama dari konten.
- main: Mengatur alur kerja: membaca kata kunci, memperbarui IP Tor, melakukan pencarian, mengambil konten, dan menyimpan hasil ke file CSV.
Catatan Penting:
- Etika dan Legalitas: Pastikan Anda memiliki izin untuk mengakses dan mengambil data dari situs web yang Anda targetkan. Selalu patuhi hukum dan regulasi yang berlaku terkait web scraping.
- Kinerja dan Keandalan: Menggunakan Tor dapat memperlambat proses karena latensi jaringan. Selain itu, beberapa situs mungkin memblokir lalu lintas dari node keluar Tor. Pertimbangkan untuk menggunakan proxy berbayar jika memerlukan kinerja dan keandalan yang lebih baik.
- Penanganan CAPTCHA: Beberapa situs mungkin menampilkan CAPTCHA saat mendeteksi