首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过Tor连接到API

通过Tor连接到API
EN

Stack Overflow用户
提问于 2018-06-09 03:15:51
回答 1查看 839关注 0票数 -2

因此,我正在开发一个需要使用nginx和php定期更新比特币价值的网站。我想使用Tor连接到API,这样我网站的IP就不会被共享或泄露。我对使用tor还是个新手,以前只用过浏览器,也没用过袜子。我正在尝试自学,但我在google上找到的大多数教程都是使用VPS来充当VPN。我正在我的本地主机上开发站点,并希望能够在我的机器上测试它。我如何使用PHP并配置我的应用程序,以使用Tor连接连接到blockchain.info等API?

EN

回答 1

Stack Overflow用户

发布于 2018-06-09 06:31:43

我是名为TorUtils的PHP库的作者,其中包括curl包装器类,确保请求通过Tor的SOCKS代理,并且不会将通过它的IP或DNS请求泄漏到Tor之外。我建议你看看这个。

您首先需要在本地安装、配置和运行一个Tor守护进程,我在此不再赘述。您通常可以找到列出的here版本,并使用操作系统的软件包管理器进行安装。

一旦Tor启动并运行,默认情况下,它将侦听端口9050上的SOCKS连接。下面的代码假设Tor在localhost上运行,并在9050上侦听SOCKS。

首先,使用composer在项目中安装TorUtils:

代码语言:javascript
复制
composer require dapphp/torutils

使用它就像下面这样简单:

代码语言:javascript
复制
<?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());

}

查看相关的示例herehere

这个类除了确保您通过本地Tor实例安全地使用curl之外,并确保您的curl和PHP版本足够高,以便您可以通过Tor解析DNS名称,并使请求在没有通过Tor代理的情况下失败。此外,它还从curl中抽象了一些请求和响应,以便更容易地检测故障,并从请求中提取头部和响应数据。

如果您有任何问题或建议,请随时提出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50767131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档