【问题标题】:Curl POST Form Request with Hidden Input Values带有隐藏输入值的卷曲 POST 表单请求
【发布时间】:2011-02-02 06:02:08
【问题描述】:

我正在尝试使用 curl 自动从澳大利亚统计局网页请求职业代码。当我使用 Curl 执行 POST 请求时,出现“搜索索引不存在”错误。我认为问题在于我没有输入两个输入,因此它失败了。我将不胜感激这方面的任何帮助:

卷曲请求:

curl --data "searchcontent=&helpdocid=[docid]&searchtext=121315&submit=Go" http://www.ausstats.abs.gov.au/ausstats/searchclass.nsf/(Searchattmnt)?openagent

ABS网站的相关代码是这样的:

<!-- Start Search Content -->
<div id="titlemain"> Search Results</div><div id="middle"></div>
<form name="attmnt" method="post" action="http://www.ausstats.abs.gov.au/ausstats/searchclass.NSF/(Searchattmnt)?openagent"> 
<input type="hidden" name="searchcontent" value="">
<input type="hidden" name="helpdocid" value="[docid]">
<div id="content">
<h3>New Search :</h3>
<input type="text" name="searchtext" size =60 MAXLENGTH="255" value="">   
<INPUT VALUE="Go" TYPE="submit">
</form>
</div>
<!-- End Search Content --> 

如果有其他帮助,请告诉我。如果我不能让它工作,我会盯着一些严肃的数据输入。

编辑:刚刚修正了 curl 请求中的错字以避免混淆。

【问题讨论】:

  • 您是否尝试过使用 Wireshark 之类的工具从网页捕获 POST?这可能比尝试破译 HTML 更准确。
  • 这里可能是一个错字,但 &sumbit 应该是 &submit (如果它甚至需要的话)。此外,这些隐藏元素的值实际上可以根据用户操作使用 javascript 设置。
  • @Justin Morgan - 不,我没有,我会试试的。 @Bill N - 是的,复制它会是一个错字。如果是这样,我还可以使用 curl 提交这个帖子,还是会阻止它?

标签: curl http-post


【解决方案1】:

问题是 curl 的 --data 参数完全按照您提供的方式发送文本,但您不是对保留字符(特别是 [] 字符)进行 url 编码,因此服务器不会能够正确匹配helpdocid字段的值。

附带说明,请勿在您发布的数据中包含“submit=Go”字段。只有同时具有名称和值的字段才会被提交。

试试这个:

curl --data "searchcontent=&helpdocid=%5Bdocid%5D&searchtext=121315" http://www.ausstats.abs.gov.au/ausstats/searchclass.nsf/(Searchattmnt)?openagent

【讨论】:

  • 我使用了@Justin Morgan 的建议并在执行请求时运行了wireshark。这给了我所需的值。最后,这是我使用的 curl 请求:curl --data "searchcontent=1220.0Data%2BCubes-SuperTable25.06.091&amp;helpdocid=17441354B1295875CA2571E6000AE9A0&amp;searchtext=121318" http://www.ausstats.abs.gov.au/ausstats/searchclass.NSF/(Searchattmnt)?openagent
【解决方案2】:

我使用@Justin Morgan 的建议并在执行请求时运行了wireshark。这给了我所需的值。最后,这是我使用的 curl 请求:

curl \
-d "searchcontent=1220.0Data%2BCubes-SuperTable25.06.091" \
-d "helpdocid=17441354B1295875CA2571E6000AE9A0" \
-d "searchtext=121318" \
http://www.ausstats.abs.gov.au/ausstats/searchclass.NSF/(Searchattmnt)?openagent

【讨论】:

    【解决方案3】:

    Mozilla 插件 livehttpheader 显示用于发布到服务器的 urlencoded 文本字符串。

    【讨论】:

      猜你喜欢
      • 2018-09-20
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      相关资源
      最近更新 更多