【问题标题】:PhantomJs, get query parameters when a POST request is sentPhantomJs,发送POST请求时获取查询参数
【发布时间】:2015-07-16 14:16:21
【问题描述】:

我正在使用onResourceRequested 来侦听请求的每个资源。 使用GET方法请求资源时,可以从url获取查询参数。

但是当它是一个POST请求时,我如何检索随请求发送的参数(例如表单数据)?

requestData 对象具有以下键:headers,id,method,time,url

page.onResourceRequested = function (requestData, networkRequest) {

        if(requestData.method == "POST")
            console.log('Receive ' + JSON.stringify(requestData, undefined, 4));
};
Receive {
    "headers": [
        {
            "name": "Origin",
            "value": "https://mastec.taleo.net"
        },
        {
            "name": "User-Agent",
            "value": "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16"
        },
        {
            "name": "Content-Type",
            "value": "application/x-www-form-urlencoded"
        },
        {
            "name": "Referer",
            "value": "https://example.com?lang=en"
        },
        {
            "name": "Accept",
            "value": "*/*"
        },
        {
            "name": "Content-Length",
            "value": "20161"
        }
    ],
    "id": 18,
    "method": "POST",
    "time": "2015-07-16T14:03:54.838Z",
    "url": "https://example3.com"
}

【问题讨论】:

  • 我们遇到了类似的问题,但注意到构建 20160112 有一个额外的字段 postData 用于 POST 请求。但它没有记录在案。

标签: javascript phantomjs casperjs http-request-parameters


【解决方案1】:

一般来说,你不能。 PhantomJS 没有公开获取任何请求内容的方法。

如果您想查看从旧 HTML(非 AJAX 版本)表单提交生成的请求,那么您需要在提交之前抓取表单字段以获取内容。

如果是 AJAXy,那么可以尝试三种策略。我在my answer here 中描述了它们。一般的解决方案是编写一个 XHR 对象代理。

【讨论】:

  • 它是否也适用于普通的 Http 请求,例如:如果 form 使用 POST 方法提交? ,而不是通过 Ajax XHR。如果没有,您是否知道任何捕获它的方法。
  • 不,这是不可能的。您可以使用代理或 tcpdump 等工具。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-18
  • 1970-01-01
  • 2014-08-04
  • 1970-01-01
  • 2014-08-17
  • 1970-01-01
相关资源
最近更新 更多