Guzzle使用代理

时间:2017-06-16 21:48:18

标签: php proxy guzzle6

参考文献:

http://docs.guzzlephp.org/en/stable/request-options.html#proxy

Set proxy in Guzzle

环境:

GuzzleHttp/6.2.1 
curl/7.47.0 
PHP/7.1.3-3+deb.sury.org~xenial+1

我正在尝试使用代理服务器进行异步Guzzle调用。

我发现当我在创建客户端时设置代理时,它可以工作。

e.g。

new Client(['proxy' => 'tcp://64.140.159.209:80'])

然而,当创建没有选项的客户端..然后在Request上设置代理时,根本不使用代理,并且guzzle从客户端机器到服务器机器进行直接连接。通过点击http://httpbin.org/ip并检查httpbin返回的Origin来确认这一点。

我需要能够为每个请求设置代理。

以下是相关代码:

$client = new Client();

$request = new Request(
                       'GET', 
                       'http://httpbin.org/ip',
                       ['proxy' => 'tcp://64.140.159.209:80']
                      );

$client->sendAsync($request)
                ->then( 
                        ...closure here 
                        // process here 
);

1 个答案:

答案 0 :(得分:1)

希望这对某人有帮助。

文档http://docs.guzzlephp.org/en/stable/request-options.html#proxy仅列出从客户端创建新请求。

这意味着我理解错误的用法。我正在直接创建新的Request并传递第三个param和代理信息,期望在单个客户端中根据请求进行更改。看起来代理是基于每个客户端设置的,即使您正在进行异步调用。

因此,我必须修改我的应用程序以使用每个异步请求的新客户端。