如何为curl设置https foward代理

时间:2018-11-27 06:27:32

标签: curl https proxy

我遇到了一个问题,没有在Google上找到解决方法

我尝试使用curl访问代理后面的https网站,但失败。

没有代理或没有ssl的访问就是成功。然后,我部署了一个tcp代理(从https://github.com/kklis/proxy获得),并设置了环境export https_proxy=127.0.0.1:443

访问https://www.baidu.com,我刚遇到connection aborted错误

这是我运行代理的方法:

./proxy -l 8111 -h www.baidu.com -p 443

并设置代理环境:

export https_proxy=127.0.0.1:8111

运行curl:

curl -v https://www.baidu.com

得到结果:

  

重新构建的URL:https://www.baidu.com/

    尝试127.0.0.1 ...

  已连接到127.0.0.1(127.0.0.1)端口8111(#0)

  建立到www.baidu.com:443的HTTP代理隧道

  连接www.baidu.com:443 HTTP / 1.1

  主持人:www.baidu.com:443

  用户代理:curl / 7.47.0

  代理连接:保持活动

  代理CONNECT中止

  与主机127.0.0.1的连接#0保持不变

  curl:(56)代理CONNECT已终止

我尝试添加-不安全并且不起作用,结果相同。

我认为这与某些人遇到的问题相同,但仍然没有答案: https://github.com/h2non/balboa/issues/1

谢谢任何人的帮助!

1 个答案:

答案 0 :(得分:0)

我想我知道原因

我捕获了数据包,使用代理访问https网站,curl将启动HTTP CONNECT方法以建立隧道。隧道应该在curl客户端和代理之间,但是TCP代理会将所有消息传递到Web服务器,因此Web服务器将重置连接。

转发代理不应该只是在客户端和Web服务器之间传递消息,还应该了解HTTP CONNECT方法

我使用标准的前向代理-鱿鱼代替,然后成功。

希望这会有所帮助