【问题标题】:Proper HTTP POST request to mimic submitting an online form (using HTML, cURL or python)正确的 HTTP POST 请求以模拟提交在线表单(使用 HTML、cURL 或 python)
【发布时间】:2021-07-23 16:13:41
【问题描述】:

问题描述: 我无法弄清楚我的 HTTP 请求中缺少什么以访问此表单后的下一页: 当我从我的代码中执行此操作时,我会登陆“欢迎”页面,而不是登陆下面第 2 步中的预期页面:

  1. 第 1 步:填写以下内容并在浏览器中点击“搜索”:

  2. 第 2 步:我进入下一页:

我已经查看了所有发布的表单数据,并在这里做了一个简化的预填表单,但在这种情况下点击搜索不起作用:

我的尝试

  • 我已阅读 this thread 建议不要简化表单,但我相信我这样做是正确的:我知道的所有字段都存在,我只是更改了它们的 HTML 可视化(这与发布的内容无关)。
  • 可以在服务器端检查 jspSynchronizerToken 字段,因此我已经尝试使用在同一浏览器中检索到的有效值手动填写它。仅此一项并不能解决问题。
  • 我曾尝试使用以下 cURL 命令,但这也不起作用:
curl -A "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0" \
    -F 'locale=en_CA' \
    -F 'jspSynchronizerToken=BzDQe5n2dIhV4LHKyqV_u341627003039920' \
    -F 'FORMAT=TXT' \
    -F 'SORTED_BY=0' \
    -F 'SearchType=0' \
    -F 'Search=String With Spaces' \
    https://www.sed.com/sed?locale=en_CA \
> ~/Downloads/sed.html
  • 我还编写了一个更深入的 python 版本,其中我提供了引用者以及从第 1 步中检索到的令牌,但没有成功。 (此代码可用,但它只是上述简化代码的可读性较差的版本,因此我看不到发布的意义,如果我错了,请告诉我)。
  • 我考虑过 cookie 和 javascript 可能是问题所在,但没有 javascript 或 cookie 的浏览器可以正确提交表单并获得正确的结果。
  • 我目前正在使用 Charles Proxy 查看请求/响应,但到目前为止我没有得到任何新的见解...

我意识到这个问题对我所展示的网站来说有点具体,但在我看来,对于网站如何处理 HTTP 请求以及如何有效地模仿那些可以通过正确答案获得的请求有一个普遍的理解。 .我过去也有过类似的其他经历,我希望一劳永逸地正确理解这一点:)

【问题讨论】:

    标签: python forms http curl post


    【解决方案1】:

    解决方案是字符串中的错误组合,以及从 Web 开发工具复制/粘贴 URL 编码。特别是,我的带空格的字符串应该保留空格而不是使用加号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-05
      • 2019-08-26
      • 1970-01-01
      • 2018-09-14
      • 1970-01-01
      • 2023-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多