【问题标题】:Compare CURL raw data with browser raw data将 CURL 原始数据与浏览器原始数据进行比较
【发布时间】:2017-12-02 08:59:04
【问题描述】:

我正在尝试在 PHP 中使用 CURL 发送 POST 数据,就像浏览器将数据发送到某个页面一样。

该站点使用 cookie,我获取 cookie 并将其与我的 POST 请求一起发送。 所以我几乎可以肯定,我发送的数据与浏览器发送到同一网页的数据完全相同。但是我从该站点收到验证错误,因此这两个请求中似乎有些不同。

我在 Chrome 中看到请求标头,它们与我在 curl_getinfo 中看到的标头相同(不包括不同的会话 cookie id,但我确信我使用了正确的 cookie id,因为我是从上一步中获得的)。我还检查了帖子数据,数据也相同。我也使用我的本地机器,所以浏览器和 curl 请求的 IP 地址是相同的。

但是,我的 CURL 请求从服务器收到错误,因此数据似乎有些不同。

我的问题不是关于我的代码,也不是关于这个特定网站,而是关于如何比较来自 CURL 和 RAW 请求表单浏览器的原始请求以找出差异然后消除它?

【问题讨论】:

  • 使用像tcpdumptshark这样的数据包捕获工具。
  • 如果可能,请公开您的请求示例,以及您正在使用的 cURL 代码。删除您不想发布的私人内容。它可能会显示某些人会看到并为您指出的内容。

标签: php curl post http-headers


【解决方案1】:

你可以检查什么:

HTTP 的东西

  • 服务器返回的错误是什么?如果是 HTTP 错误,请检查 what is the reason
  • 如果您更改了内容,请确保更新了 Content-Length
  • 某些服务器会检查您的脚本可能未设置的Referer
  • 某些服务器会检查用户代理,请确保设置相同

技术资料

  • 您确定使用正确的行结束符\n\r\n\n\r 吗?
  • 您是否以空行结束了 HTTP 请求?
  • 尝试使用多种工具来嗅探您发送的内容。 Barmar 建议 tcpdumptshark,但 wireshark 很高兴看到您的脚本发送的内容。它仍然是相同的,请使用第二个工具仔细检查您的浏览器请求:Firebug 或 LiveHTTPHeaders 等 Firefox 模块也很好地集成在浏览器中。确保它们显示相同的内容。
  • 如果您尝试修改发送的数据,请查看 Tamper Data Firefox 模块。动态修改请求真是太棒了。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-28
    • 2015-12-22
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 2012-04-29
    • 2015-07-18
    • 1970-01-01
    相关资源
    最近更新 更多