【问题标题】:How can I use curl to simulate a request from Firefox over a proxy?如何使用 curl 通过代理模拟来自 Firefox 的请求?
【发布时间】:2013-02-26 08:07:54
【问题描述】:

特别是,当我将 firefox 设置为使用代理进行 https 流量时,我试图复制它的行为。

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

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

为了测试 HTTPS 连接代理的目的,如何使 curl 表现得像 firefox?

EDIT1:问题不在于用户代理,因为我并没有试图欺骗代理认为我是 Firefox,只是为了帮助代理像 Firefox 一样运行。

【问题讨论】:

  • 用户代理仍然通过代理发送到服务器,因此除非您将自己显示为 Firefox,否则服务器仍会认为您不是 Firefox。

标签: firefox curl https proxy


【解决方案1】:

我通过Firebug 完成了这项工作。

安装 firebug 后,请按照以下步骤操作:

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

  1. 选择Net标签

  1. 刷新页面

  2. 右键单击要模拟的 URL 请求

  3. 选择copy as cURL

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

【讨论】:

    【解决方案2】:

    您必须指定一个代理,否则事情将无法正常工作,请这样做:

    1. curl -x 127.0.0.1:8888 "httpS://www.example.com/" — 确保您尝试通过 HTTPS 进行连接,否则将发送简单的 get。
    2. curl -p -x 127.0.0.1:8888 "http://www.example.com/" — 即使使用普通的 HTTP 资源,它也可以工作。

    除了这个之外,很难找到关于该主题的任何现有主题,所以也许我正在回答一个已经回答的问题。

    【讨论】:

      【解决方案3】:

      使用 CURLOPT_USERAGENT 选项将代理设置为 firefox

      例如参考 The CURL User Agent

      要处理 ssl 部分,请查看此示例 http://curl.haxx.se/libcurl/c/https.html

      最好的方法是在 ether real 中进行捕获,然后使用 CURLOPT_* 设置相应的标头字段

      【讨论】:

      • 我不认为这只是 USERAGENT 问题。我更担心缺少CONNECT
      • @DanielStenberg,尽管使用我在问题中给出的命令,代理没有看到 CONNECT。
      • 问题中的命令未指定任何代理...请参阅 --proxy
      猜你喜欢
      • 2019-04-07
      • 2019-04-06
      • 2015-07-27
      • 2014-08-25
      • 1970-01-01
      • 2019-06-22
      • 2011-07-09
      • 1970-01-01
      相关资源
      最近更新 更多