所以我正在开发一个需要使用nginx和php定期更新比特币价值的网站。我想使用Tor连接到API,因此我的网站的IP不会被共享或泄露。我以前是使用tor的新手,之前只使用过浏览器,之前我没有使用过SOCKS。我试图自学,但我在谷歌上找到的大多数教程都使用VPS作为VPN。我在本地主机上开发网站,希望能够从我的机器上测试它。我如何使用PHP并将我的应用程序配置为使用Tor连接连接到诸如blockchain.info之类的API?
答案 0 :(得分:0)
我是名为TorUtils的PHP库的作者,其中包含curl包装类,可确保请求通过Tor的SOCKS代理,并且不会泄漏通过Tor在外部发出的IP或DNS请求。我建议你看一下。
首先需要在本地安装,配置和运行Tor守护进程,我不会在这里介绍。您通常可以找到列出here的版本并使用操作系统的软件包管理器进行安装。
一旦Tor启动并运行,默认情况下它将侦听端口9050上的SOCKS连接。以下代码假定Tor在localhost上运行并在9050上侦听SOCKS。
首先,使用composer:
在项目中安装TorUtilscomposer require dapphp/torutils
使用它就像以下一样简单:
<?php
require_once 'vendor/autoload.php';
// configure a TorCurlWrapper to proxy through Tor at 127.0.0.1:9050
$tch = new \Dapphp\TorUtils\TorCurlWrapper('127.0.0.1', 9050);
// set curl options as usual
$tch->setopt(CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0');
$tch->setopt(CURLOPT_FOLLOWLOCATION, 1);
try {
// issue a GET request; throws an \Exception if the request fails for any reason
$tch->httpGet('https://blockchain.info/ticker');
// get the response body from the last request
$response = $tch->getResponseBody();
$response = $tch->getResponseBody();
$data = json_decode($response, true);
echo "1 BTC equals {$data['USD']['15m']} USD\n";
$tch->httpGet('https://apiv2.bitcoinaverage.com/indices/global/ticker/BTCUSD');
$response = $tch->getResponseBody();
$data = json_decode($response, true);
echo "BitcoinAverage ask rate is 1 BTC = {$data['ask']}\n";
} catch (\Exception $ex) {
echo sprintf("Request to %s failed with error %d: %s\n",
$tch->getInfo()['url'],
$ex->getCode(),
$ex->getMessage());
}
这个类只做了一点,但确保你通过本地Tor实例安全地使用curl,它确保你的curl和PHP版本足够高,你可以通过Tor解析DNS名称,如果它们不能使请求失败通过Tor代理。此外,它还会略微提取请求和响应,因此可以更轻松地检测故障并从请求中提取标头和响应数据。
如果您有任何问题或建议,请随时提出。