Соскрести с сайта.onion с помощью Web::Scraper

Проблема: Соскрести с сайта tor .onion с помощью Web::Scraper

Я хотел бы изменить свой код для подключения к сайту.onion. Я считаю, что мне нужно подключиться к прокси-серверу SOCKS5, но не знаю, как это сделать с помощью Web::Scraper

Существующий код:

use Web::Scraper;
my $piratelink=$PIRATEBAYSERVER.'/search/' . $srstring . '%20'. 's'.$sval[1].'e'.$epinum.'/0/7/0';
my $purlToScrape = $piratelink;
    my $ns = scraper {      
    process "td>a", 'mag[]' => '@href';
    process "td>div>a", 'tor[]' => '@href';
    process "td font.detDesc", 'sizerow[]' => 'TEXT';
};
my $mres = $ns->scrape(URI->new($purlToScrape));

1 ответ

Решение

Web::Scraper использует LWP, если вы передаете URI скрести.

Вы можете либо извлечь HTML, используя другую HTTP-библиотеку, которая использует SOCKS, либо используя общую UserAgent переменная от Web::ScraperВы можете настроить LWP для использования SOCKS и передать его в качестве агента.

use strict;
use LWP::UserAgent;
use Web::Scraper;

# set up a LWP object with Tor socks address
my $ua = LWP::UserAgent->new(
    agent => q{Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 1.1.4322)},
);
$ua->proxy([qw/ http https /] => 'socks://localhost:9050'); # Tor proxy
$ua->cookie_jar({});

my $PIRATEBAYSERVER = 'http://uj3wazyk5u4hnvtk.onion';
my $srstring = 'photoshop';


my $piratelink=$PIRATEBAYSERVER.'/search/' . $srstring; # . '%20'. 's'.$sval[1].'e'.$epinum.'/0/7/0';

my $purlToScrape = $piratelink;
my $ns = scraper {      
    process "td>a", 'mag[]' => '@href';
    process "td>div>a", 'tor[]' => '@href';
    process "td font.detDesc", 'sizerow[]' => 'TEXT';
};

# override Scraper's UserAgent with our SOCKS LWP object
$Web::Scraper::UserAgent = $ua;

my $mres = $ns->scrape(URI->new($purlToScrape));

print $mres;

Обратите внимание, вам также необходимо установить модуль CPAN LWP::Protocol::socks

Другие вопросы по тегам