下载从javascript生成POST参数的主页

时间:2014-10-04 15:45:43

标签: javascript jquery html wget

做了很多研究,但现在我很遗憾地完全陷入困境。

我需要下载一个html页面: 为此,我在一个公式中填写不同的数据,然后单击提交按钮,然后我想保存回复。

使用Firebug我可以看到我的数据已填写并通过POST发送。不幸的是还有一个论点,我无法追溯如何生成它,如果没有这最后一个论点,我没有得到足够的html响应,但是错误页面。

wget和curl(cookies,useragent,header,referrer)在没有最后一个参数的情况下失败!

我不太熟悉jquery和javascript,所以我真的不知道数据来自哪里,但如果浏览器知道它我也应该能够!

我发现这是相似的,只有我的字段生成时似乎更难:wget : get field info before sending post-data

就我而言,我追溯到这个:

<script type="text/javascript">
$(document).ready(function(){
$.get('/getmyData.asp?str=erServiceXUVC',function(string){
$('#oikuZR').append('<input type="hidden" name="lsXUVp" value="'+ string +'">');
});
});
</script>

与使用真实浏览器和wget(即使使用用户代理和东西)的区别是因为我无法访问此值,如果我使用普通浏览器,则显示该值。

<input type="hidden" value="34928321" name="lsXUVp">

这正是我需要的价值(与firebug POST相比)!但....

我的知识结束了。

  • 找不到&#34; 34928321&#34;在代码中
  • &#34;#oikuZR&#34;没有出现在萤火虫的DOM列表中,但也许我做错了(有成千上万的条目)
  • 调试上面的脚本我可以看到string = 34928321作为局部变量,但是我不知道该函数在哪里被称为
  • 如果我打开www.homepage.com/getmyData.asp?str=erServiceXUVC(有或没有params),只会出现错误页面。

考虑使用Splash代理来为我运行javascript,而不是wget那个页面,但是因为我不理解这些机制但我很怀疑。

那我该怎么办?

也许一个支持javascript的浏览器接受来自命令行的命令:open,fillout,send,saveHtml?备择方案? wget的解决方案(最喜欢的!)?

1 个答案:

答案 0 :(得分:1)

我认为这个电话会被添加,以防止(或至少更加努力)做你想做的事情。

诀窍在于这一行:

$.get('/getmyData.asp?str=erServiceXUVC',function(string){
   ..
});

此行执行AJAX请求。当请求成功时,将调用回调函数,并将响应传递给参数string

因此,尽管有此请求,但会生成一个代码,然后将其与表单一起发回。在不检查实际环境的情况下我无法确定,但我认为AJAX请求取决于会话(可能通过cookie)。如果没有该会话,它可能会生成错误消息。

因此,要解决此问题,您必须获取该页面以及随附的任何Cookie。然后,在请求代码时,使用相同的cookie,因此服务器将在同一会话中看到该请求。

这很可能是防止垃圾邮件滥用表单的伎俩。因此,很难猜出可能有什么其他技巧,还有什么需要让它发挥作用。