我想获取此网页通过将参数变体注入 HTTP POST 的脚本。
使用 Firefox Tamper Data 扩展,我捕获了一个示例请求。以下是原始标头(省略了 Content-length 和 gzip Accept-encoding)
Host: www.fourmilab.ch
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:43.0) Gecko/20100101 Firefox/43.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
DNT: 1
Referer: http://www.fourmilab.ch/cgi-bin/Yoursky
Connection: keep-alive
同样,原始帖子数据如下
date=1&utc=2010-02-24+0%3A00%3A00&jd=2455251.50000&lat=47%B0&ns=North&lon=7%B0&ew=East&coords=on&moonp=on&deep=on&deepm=2.5&consto=on&constn=on&limag=5.5&starnm=2.0&starbm=2.5&imgsize=1200&fontscale=0.7&scheme=0&elements=
我使用这些来构建一个 wget 命令,据我所知,它应该返回浏览器看到的相同网页。
wget --header="Host: www.fourmilab.ch" --header="User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:43.0) Gecko/20100101 Firefox/43.0" --header="Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" --header="Accept-Language: en-US,en;q=0.5" --header="DNT: 1" --header="Referer: http://www.fourmilab.ch/cgi-bin/Yoursky" --header="Connection: keep-alive" -data "date=1&utc=2010-02-24+0%3A00%3A00&jd=2455251.50000&lat=47%B0&ns=North&lon=7%B0&ew=East&coords=on&moonp=on&deep=on&deepm=2.5&consto=on&constn=on&limag=5.5&starnm=2.0&starbm=2.5&imgsize=1200&fontscale=0.7&scheme=0&elements=" -o /dev/null -O - http://www.fourmilab.ch/cgi-bin/Yoursky > /tmp/sky.html
服务器未按预期响应。
浏览器中的结果是网页的表单字段将预先填充与原始请求相同的值,因此如果您再次点击“更新”按钮,您将循环相同的结果。
当我运行 wget 版本时,它会返回默认的初始网页,就好像我们在执行 GET 并且不请求任何特定参数一样。
我使用 wget 的方式是否不正确?或者使用不完整?为什么它没有获得与浏览器相同的结果?