Torify 连接并以编程方式更改出口节点
Torify connection and change exit node programmatically
我正在编写一个 PHP 脚本,它基本上循环遍历我存储在数据库中的一些数据。该项目的两个主要重要字段是 'url' 和 'country'.
基本上我想做的是遍历所有这些 URL 并确定哪些链接断开(使用一些 PHP 解析器,但了解这个问题并不重要).但是,我遇到的问题是您无法访问分配给某个国家/地区的 URL,除非您拥有来自该国家/地区的 IP 地址。我已经为 U.S URL 设置了这个脚本,因为我在这里,所以这很简单。
我想知道我是否以及如何(向我指出资源、提示、解决方案)我可以使用 Tor 以编程方式检查这个 2 个字母的国家/地区代码并使用该 IP 转到 URL。我猜这与使用那个国家的出口节点有关,但我不太确定。
使用 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'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 包装器,它通过 Tor SOCKS5 代理路由 cURL。 ControlClient用于在每次请求从某个国家切换到ExitNodes之前设置配置选项。
您可以使用 composer 安装 TorUtils:
php composer.phar require dapphp/torutils
然后在您的代码中使用 require 'vendor/autoload.php';
自动加载 TorUtils 类。
我正在编写一个 PHP 脚本,它基本上循环遍历我存储在数据库中的一些数据。该项目的两个主要重要字段是 'url' 和 'country'.
基本上我想做的是遍历所有这些 URL 并确定哪些链接断开(使用一些 PHP 解析器,但了解这个问题并不重要).但是,我遇到的问题是您无法访问分配给某个国家/地区的 URL,除非您拥有来自该国家/地区的 IP 地址。我已经为 U.S URL 设置了这个脚本,因为我在这里,所以这很简单。
我想知道我是否以及如何(向我指出资源、提示、解决方案)我可以使用 Tor 以编程方式检查这个 2 个字母的国家/地区代码并使用该 IP 转到 URL。我猜这与使用那个国家的出口节点有关,但我不太确定。
使用 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'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 包装器,它通过 Tor SOCKS5 代理路由 cURL。 ControlClient用于在每次请求从某个国家切换到ExitNodes之前设置配置选项。
您可以使用 composer 安装 TorUtils:
php composer.phar require dapphp/torutils
然后在您的代码中使用 require 'vendor/autoload.php';
自动加载 TorUtils 类。