正确的 HTTP POST 请求来模拟提交在线表单(使用 HTML、cURL 或 python)

Proper HTTP POST request to mimic submitting an online form (using HTML, cURL or python)

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

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

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

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

我试过的

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

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

解决方案结果是字符串中的错误以及来自 Web 开发工具的 copying/pasting URL 编码的组合。特别是,我的带空格的字符串应该保留空格而不是使用加号。