2013-03-11 131 views
3

特别是,我试图复制firefox的行为,当我将其设置为使用https通信的代理。如何使用curl通过代理模拟Firefox的请求?

从我的测试看来,Firefox向代理发送CONNECT请求,而下面的curl命令直接发送GET到代理。

curl --proxy-basic mydomain.com:8001 https://www.google.com 

如何使curl像HTTPS连接代理的测试目的一样行为?

编辑1:问题不在用户代理,因为我不想欺骗代理思考我是Firefox,只是为了帮助代理功能的方式与Firefox。

+0

用户代理仍然通过代理发送到服务器,所以服务器仍然会将您视为不是Firefox,除非您将自己显示为Firefox。 – 2013-03-11 08:54:46

回答

0

使用CURLOPT_USERAGENT选项代理设置为火狐

例如参照 The CURL User Agent

用于处理SSL部分看看这个例子 http://curl.haxx.se/libcurl/c/https.html

,最好的办法去了解它,以便采取一个捕获在以太真实,然后设置相应的头字段使用CURLOPT_ *

+0

我不认为这只是USERAGENT问题。我更担心缺少'CONNECT'。 – merlin2011 2013-03-11 08:02:42

+0

如果您通过http代理执行HTTPS,那么您已经在执行CONNECT ... – 2013-03-11 08:55:29

+0

@DanielStenberg,但代理服务器没有看到CONNECT,但使用了我在该问题中提供的命令。 – merlin2011 2013-03-11 09:06:35

2

我已经通过Firebug

一旦你安装Firebug的,按照此步骤:

  1. 右键单击的Firefox网页,选择此选项:

enter image description here

  • 选择Net标签
  • enter image description here

  • 刷新页面

  • 右键单击您要模拟的URL请求

  • 选择copy as cURL

  • enter image description here

    1. 您想要模拟的URL请求现在位于剪贴板中。
    1

    你必须指定代理,否则事情将无法正常工作,不喜欢:

    1. curl -x 127.0.0.1:8888 "httpS://www.example.com/" - 请确保您尝试连接throught HTTPS,否则简单的GET将被发送。
    2. curl -p -x 127.0.0.1:8888 "http://www.example.com/" - 即使使用普通的HTTP资源,该功能也可以正常工作。

    很难找到任何已经存在的话题,除此之外,所以也许我正在回答已经回答的问题。