如何在 Guzzle 中正确设置 CURLOPT_PROXY?
How to set CURLOPT_PROXY in Guzzle right way?
我正在尝试设置 CURLOPT_PROXY 但它不起作用。卷曲已启用。如果我通过 "raw" curl 请求执行此操作 - 一切正常.. 那么?可能的解决方案是什么?
$client = new GuzzleHttp\Client();
$res = $client->get('http://www.ipmango.com/api/myip', [
'config' => [
'curl' => [
'CURLOPT_PROXY' => '194.135.220.18:8081',
],
]
]);
echo $res->getBody(); // displays my ip addess, not that what I set.
我花了很多时间发现自己还需要将选项 CURLOPT_HTTPPROXYTUNNEL
设置为 1
。所以像:
<?php
$res = $client->get('http://www.ipmango.com/api/myip', [
'config' => [
'curl' => [
'CURLOPT_PROXY' => '194.135.220.18:8081',
'CURLOPT_HTTPPROXYTUNNEL' => 1,
]
]
]);
GuzzleHttp 客户端自动检测是否设置了环境变量 HTTP_PROXY
和 HTTPS_PROXY
。
(参见 \path\to\project\vendor\guzzlehttp\guzzle\src\Client.php 的第 165-175 行)
所以将HTTP_PROXY=http://ip:port
和HTTPS_PROXY=https://ip:port
都设置为系统环境变量。现在重新启动命令行,然后重新运行 php artisan serve
如果需要,您也可以在环境变量中为您的代理配置身份验证
Guzzle 文档提供了有关为单个请求设置代理的信息
$client->request('GET', '/', ['proxy' => 'tcp://localhost:8125']);
http://docs.guzzlephp.org/en/latest/request-options.html#proxy
但是可以在初始化客户端的时候设置为所有请求
$client = new Client([
'base_uri' => 'http://doma.in/',
'timeout' => 10.0,
'cookie' => true,
'proxy' => 'tcp://12.34.56.78:3128',
]);
我正在尝试设置 CURLOPT_PROXY 但它不起作用。卷曲已启用。如果我通过 "raw" curl 请求执行此操作 - 一切正常.. 那么?可能的解决方案是什么?
$client = new GuzzleHttp\Client();
$res = $client->get('http://www.ipmango.com/api/myip', [
'config' => [
'curl' => [
'CURLOPT_PROXY' => '194.135.220.18:8081',
],
]
]);
echo $res->getBody(); // displays my ip addess, not that what I set.
我花了很多时间发现自己还需要将选项 CURLOPT_HTTPPROXYTUNNEL
设置为 1
。所以像:
<?php
$res = $client->get('http://www.ipmango.com/api/myip', [
'config' => [
'curl' => [
'CURLOPT_PROXY' => '194.135.220.18:8081',
'CURLOPT_HTTPPROXYTUNNEL' => 1,
]
]
]);
GuzzleHttp 客户端自动检测是否设置了环境变量 HTTP_PROXY
和 HTTPS_PROXY
。
(参见 \path\to\project\vendor\guzzlehttp\guzzle\src\Client.php 的第 165-175 行)
所以将HTTP_PROXY=http://ip:port
和HTTPS_PROXY=https://ip:port
都设置为系统环境变量。现在重新启动命令行,然后重新运行 php artisan serve
如果需要,您也可以在环境变量中为您的代理配置身份验证
Guzzle 文档提供了有关为单个请求设置代理的信息
$client->request('GET', '/', ['proxy' => 'tcp://localhost:8125']);
http://docs.guzzlephp.org/en/latest/request-options.html#proxy
但是可以在初始化客户端的时候设置为所有请求
$client = new Client([
'base_uri' => 'http://doma.in/',
'timeout' => 10.0,
'cookie' => true,
'proxy' => 'tcp://12.34.56.78:3128',
]);