Заменить соединение и изменить узел выхода программно

Я пишу скрипт PHP, который в основном перебирает некоторые данные, которые я храню в своей базе данных. Два главных важных поля для этого проекта — «URL» и «страна».

По сути, я пытаюсь выполнить цикл по всем этим URL-адресам и определить, какие ссылки не работают (с использованием некоторого распознавателя PHP, но не важно знать об этой проблеме). Однако проблема, с которой я сталкиваюсь, заключается в том, что вы не можете получить доступ к URL-адресу, назначенному определенной стране, если у вас нет IP-адреса из этой страны. У меня уже есть этот скрипт, настроенный для URL U.S, потому что я здесь, и поэтому он делает это простым.

Мне было интересно, если и как (указать мне ресурсы, советы, решения), могу ли я использовать Tor для программной проверки этого двухбуквенного кода страны и перехода по этому URL-адресу с использованием этого IP-адреса. Я предполагаю, что это будет иметь какое-то отношение к использованию выходного узла из этой страны, но я не слишком уверен.

1

Решение

С использованием ExitNodes Опция конфигурации, можно указать узлы выхода из конкретной страны, используя синтаксис {US} где США код страны.

Использование PHP TorUtils Библиотека это может быть автоматизировано простым способом.

Вот пример кода:

<?php

require 'TorUtils/src/ControlClient.php';
require 'TorUtils/src/TorCurlWrapper.php';

// list of country codes to use
$countries = array('US', 'FR', 'RU', 'GB', 'CA');

// get new control client for connecting to Tor's control port
$tc = new Dapphp\TorUtils\ControlClient();

$tc->connect(); // connect
$tc->authenticate('password'); // authenticate

foreach($countries as $country) {
$country = '{' . $country . '}'; // e.g. {US}

$tc->setConf(array('ExitNodes' => $country)); // set config to use exit node from country

// get new curl wrapped through Tor SOCKS5 proxy
$curl = new Dapphp\TorUtils\TorCurlWrapper();
$curl->setopt(CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:41.0) Gecko/20100101 Firefox 41.0');

// make request - should go through exit node from specified country
if ($curl->httpGet('http://whatismycountry.com')) {
echo $curl->getResponseBody();
}
}

TorCurlWrapper — это простая оболочка cURL, которая маршрутизирует cURL через прокси-сервер Tor SOCKS5. ControlClient используется для установки параметра конфигурации перед каждым запросом на переключение на узлы выхода из определенной страны.

Используя composer, вы можете установить TorUtils:

php composer.phar require dapphp/torutils

Тогда в вашем коде используйте require 'vendor/autoload.php'; автозагрузка классов TorUtils.

Надеюсь, это кому-нибудь поможет.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]