Я пишу скрипт PHP, который в основном перебирает некоторые данные, которые я храню в своей базе данных. Два главных важных поля для этого проекта — «URL» и «страна».
По сути, я пытаюсь выполнить цикл по всем этим URL-адресам и определить, какие ссылки не работают (с использованием некоторого распознавателя PHP, но не важно знать об этой проблеме). Однако проблема, с которой я сталкиваюсь, заключается в том, что вы не можете получить доступ к URL-адресу, назначенному определенной стране, если у вас нет IP-адреса из этой страны. У меня уже есть этот скрипт, настроенный для URL U.S, потому что я здесь, и поэтому он делает это простым.
Мне было интересно, если и как (указать мне ресурсы, советы, решения), могу ли я использовать Tor для программной проверки этого двухбуквенного кода страны и перехода по этому URL-адресу с использованием этого IP-адреса. Я предполагаю, что это будет иметь какое-то отношение к использованию выходного узла из этой страны, но я не слишком уверен.
С использованием 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.
Надеюсь, это кому-нибудь поможет.
Других решений пока нет …