Я пишу скрипт PHP, который в основном циклыет через некоторые данные, которые я сохранил в своей базе данных. Двумя основными важными областями для этого проекта являются "url" и "country".
В основном то, что я пытаюсь сделать, - это цикл через все эти URL-адреса и определить, какие ссылки были нарушены (с использованием какого-либо PHP-решения, но не важно знать эту проблему). Однако проблема, с которой я столкнулась, заключается в том, что вы не можете получить доступ к URL-адресу, присвоенному определенной стране, если у вас нет IP-адреса, исходящего из этой страны. У меня уже есть этот скрипт, настроенный для URL-адресов США, потому что я здесь, и поэтому он делает это просто.
Мне было интересно, если и как (укажите мне ресурсы, советы, решения). Я могу использовать Tor для программной проверки этого двухбуквенного кода страны и перехода к этому URL-адресу с использованием этого IP-адреса. Я предполагаю, что это будет иметь какое-то отношение к использованию Exit Node из этой страны, но я не уверен.
Используя ExitNodes
конфигурации ExitNodes
, можно указать узлы выхода из конкретной страны, используя синтаксис {US}
где 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 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 используется для установки параметра конфигурации перед каждым запросом для перехода на ExitNodes из определенной страны.
Используя композитор, вы можете установить TorUtils:
php composer.phar require dapphp/torutils
Затем в вашем коде используйте require 'vendor/autoload.php';
для автозагрузки классов TorUtils.
Надеюсь, это поможет кому-то.
$curl
является вашим объектом CurlWrapper,echo $curl->getInfo()['url'];
должен вернуть окончательный URL-адрес, используемый после перенаправления. Если это не работает, дайте мне знать, определенно есть способ получить URL перенаправления.