我正在尝试设置CURLOPT_PROXY,但它不起作用。卷曲已启用。如果我用" raw"卷曲请求 - 一切正常..那么?可能是什么解决方案?
$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.
答案 0 :(得分:9)
我花了很多时间发现自己,您还需要将选项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,
]
]
]);
答案 1 :(得分:3)
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
如果需要,您也可以在环境变量中为代理配置身份验证
答案 2 :(得分:1)
Guzzle文档提供有关为单个请求设置代理的信息
$client = new Client([
'base_uri' => 'http://doma.in/',
'timeout' => 10.0,
'cookie' => true,
'proxy' => 'tcp://12.34.56.78:3128',
]);
http://docs.guzzlephp.org/en/latest/request-options.html#proxy
但是,您可以在初始化客户端时将其设置为所有请求
{{1}}