将CURL原始数据与浏览器原始数据进行比较

时间:2017-06-28 20:23:04

标签: php curl post http-headers

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

该网站使用cookie,我获得了cookie,并通过我的POST请求发送它。 所以我几乎可以肯定我将确切的数据与浏览器发送到同一网页的数据一起发送。但是我从网站上得到验证错误,所以在这两个请求中似乎有些不同。

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

但是我从服务器收到CURL请求的错误,所以看起来数据有一些区别。

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

1 个答案:

答案 0 :(得分:0)

您可以查看的内容:

HTTP内容

  • 服务器返回的错误是什么?如果是HTTP错误,请选中what is the reason
  • 如果您更改了内容,请务必更新内容长度
  • 某些服务器检查可能未由脚本设置的Referer
  • 某些服务器会检查User-Agent,请确保设置相同的

技术资料

  • 您确定使用正确的行结束var mainItems = [ { name: Car, subItems: [ { name: SubCar1 }, { name: SubCar2 } ] }, { name: Food, subItems: [ { name: SubFood1 }, { name: SubFood2 } ] } ] <table> <tbody data-pagination-id="tableItem" data-current-page="cItemCtrl.currentPage" data-dir-paginate="mainItem in cItemCtrl.mainItems | itemsPerPage: cItemCtrl.numberPerPage" data-total-items="cItemCtrl.total" data-status="on"> <tr data-ng-repeat="subItem in mainItem.subItems"> <td>{{mainItem.name}}</td> <td>{{subItem.name}}</td> </tr> </tbody> </table> <dir-pagination-controls data-pagination-id="tableItem" on-page-change="cItemCtrl.pager(x)"></dir-pagination-controls> \n\r\n吗?
  • 您是否以空行结束了您的HTTP请求?
  • 尝试使用多种工具来嗅探您发送的内容。 Barmar建议\n\rtcpdump,但tshark非常适合查看您的脚本发送的内容。它仍然相同,使用第二个工具仔细检查您的浏览器请求:Firebug或wireshark等Firefox模块也很好地集成在浏览器中。确保它们显示相同的内容。
  • 如果您尝试修改要发送的数据,请查看Tamper Data Firefox模块。在运行中修改请求真是太棒了。

希望这有帮助。