【问题标题】:How to reproduce a request via cURL如何通过 cURL 重现请求
【发布时间】:2012-05-03 13:37:20
【问题描述】:

我想捕捉参数是如何发送的。通常我所做的是发出请求并在 Firebug 的参数选项卡上检查发送的参数是什么。但是,当我尝试在以下站点 (http://www.infraero.gov.br/voos/index_2.aspx) 上执行此操作时,它不起作用 - 我看不到使用 curl 重复此请求的参数是什么。我怎么才能得到它?我不确定,但我认为正在使用 cookie。

编辑

我能够获取请求内容,但无法理解。它似乎使用 javascript 来生成正确的请求。如何通过 cURL 重现此请求?

【问题讨论】:

  • 他们正在使用 post... 不会有任何“参数”。使用 HTTPfox 或 firebug 的“net”选项卡查看低级别的 http 通信,您将确切地看到网络上发生了什么。
  • 它只显示请求头而不是它的内容。如何获取必要的信息以通过 curl 重播此请求?
  • POST 数据进入请求正文,而不是标头。例如查看 HTTPFox 的“内容”选项卡。
  • 啊,现在我看到了请求内容。但是我无法理解那里发生了什么。似乎正在使用javascript。如何通过 cURL 重现此请求?

标签: forms cookies curl firebug query-parameters


【解决方案1】:

您没有说明您希望如何完成,但您可以使用 curl -d name1=contents1&name2=contents2 [TARGETURL] 等简单地发送请求。

请注意,您可能首先需要获取主页并提取“__VIEWSTATE”表单字段并提交回该(非常大的)内容以使您的提交被接受。

【讨论】:

  • 是的,我知道如何 curl 发布请求。我相信我的问题在于“__VIEWSTATE”。我不习惯 ASP,所以我不知道它是什么,也不知道如何处理它。是否有“捷径”让我无需深入学习就可以发送请求?
  • 由于它是作为隐藏表单字段填写的,因此您可以假设您的 curl 请求需要继续发送。只需获取 HTML 页面,提取 __VIEWSTATE 值并将其传递到您的 curl 请求中。
【解决方案2】:

你看到之前的问题cURL post data to asp.net page 了吗?这可能会回答那里的问题(我所做的只是搜索“ASP.NET cURL”)。而这个:Unable to load ASP.NET page using Python urllib2 谈论 Python,但它以一种应该转换为 cURL 的方式接近它。

但是对于我的 0.02 美元,我不会费心尝试解开 ASP.NET 和 __VIEWSTATE 以及 javascript。使用 cURL 是绝对要求吗?

我认为您最好使用一个更像真正的浏览器并理解 javascript 的客户端。这有点工作,但并不像听起来那么糟糕。我以前用http://watirwebdriver.com/ 和一个简短的Ruby 脚本做过这个。这是使用Python and Mechanize 的方法(这可能更轻量级)。 http://phantomjs.org/ 是您使用 javascript 编写脚本的另一个选项。如果你用 Google 搜索“Scraping ASP.NET”,你会发现这是一个常见问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 2016-01-18
    • 2017-11-21
    • 2018-06-21
    相关资源
    最近更新 更多