【发布时间】:2018-10-19 17:07:51
【问题描述】:
我尝试使用 libcurl 连接到 socks5 代理,但是我收到了答案 SOCKS: authentication failed。我还尝试通过带有 cURL 的 Powershell 脚本连接到代理服务器——它可以工作,因此代理服务器可用并且我的登录名和密码正确。我尝试了很多解决方案...但是通过 PHP 脚本连接仍然无法正常工作。
PHP 版本 – 5.4,cURL 版本 – 7.19。我能做什么?
[更新]这是我当前的代码。我想用我的 Telegram 机器人发送消息 :)
$proxy = '<hostname>:<port>';
$proxy_auth = '<username>:<password>';
$url = 'https://api.telegram.org/bot<botID>/sendMessage?'.'chat_id='.$chat_id.'&parse_mode='.$parse_mode.'&text='.'test';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxy_auth);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, true);
$curl_scraped_page = curl_exec($ch);
$error = curl_error($ch);
echo $error;
echo $curl_scraped_page;
curl_close($ch);
【问题讨论】:
-
也许您的 curl 配置不信任 https 连接?试试
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false) -
尝试添加:
curl_setopt($ch, CURLOPT_PROXY, $proxy);curl_setopt($ch, CURLOPT_PROXYUSERPWD, $password); -
我会升级到 curl 7.21.7 或更高版本,然后你可以直接使用更新的
curl_setopt($ch, CURLOPT_PROXY, 'socks5://bob:marley@localhost:12345');选项 -
如果你想使用你的查询结果,我想你应该添加这个:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);curl_setopt($this->curlInstance, CURLOPT_RETURNTRANSFER, TRUE); -
@MrHeelis 试图缩小范围,哈哈
标签: php libcurl telegram-bot socks