Анонимный парсинг с помощью Tor

В этой заметке мы хотим показать основные преимущества и недостатки сети Tor, а также процесс настройки прокси в связке с python

Довольно часто при парсинге, отправляя большое количество запросов для получения информации с сайта, может возникнуть проблема, связанная с блокировкой доступа по IP адресу. Одним из решений данной проблемы будет использование сети Tor.

Главными преимуществами использования сети Tor в сравнении с обычными прокси являются:

  • Сложность в определение внешнего IP адреса;
  • Tor предоставляется бесплатно.

Главным же недостатком является медленная скорость соединения в сравнении с обычным интернетом, но для парсинга сайтов данный недостаток не является критичным, так как для передачи текстовой информации сети Tor вполне хватает.

Перейдем к описанию настройки данной программы. С официального сайта Tor следует скачать архив с бинарным приложением и положить его в удобную папку (для примера положим в папку C:\tor). В этой папке создадим файл с именем torrc со следующим содержанием:

SOCKSPort 9052 # Порт, на котором будет находиться Tor GeoIPFile C:\tor\geoip # Путь к файлу geoip, идет в месте с бинарником в архиве GeoIPv6File C:\tor\geoip6 # Путь к файлу geoip6, идет в месте с бинарником в архиве CookieAuthentication 1

После проделанных действий Tor настроен и можно его запускать. Открываем cmd, переходим в нашу папку, где хранится Tor, и набираем команду:

tor.exe -f torrc

Далее покажем на простом примере, как получить информацию с сайта, используя python, направляя весь трафик через Tor:

import requests session = requests.session() session.proxies = {'http': 'socks5://127.0.0.1:9050', 'https': 'socks5://127.0.0.1:9050'} print(session.get("http://httpbin.org/ip").text)
44
4 комментария

То же самое, но на PHP:

$url = 'http://httpbin.org/ip';
$proxy = '127.0.0.1:9050';
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);

$curl_scraped_page = curl_exec($ch);
curl_close($ch);

var_dump($curl_scraped_page);

2

Тот кто писал это, забыл что, многие сайты (google, yandex) банят соединения, сделанные с помощью tor. Так что, смысла в этой статье нет

писал парсеры под букмекеров - все было ок

1 Кмк нехорошо нагружать Тор, он для другого.
2 выходные узлы тора известны и их банят