做了很多研究,但现在我很遗憾地完全陷入困境。
我需要下载一个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相比)!但....
我的知识结束了。
考虑使用Splash代理来为我运行javascript,而不是wget那个页面,但是因为我不理解这些机制但我很怀疑。
那我该怎么办?
也许一个支持javascript的浏览器接受来自命令行的命令:open,fillout,send,saveHtml?备择方案? wget的解决方案(最喜欢的!)?
答案 0 :(得分:1)
我认为这个电话会被添加,以防止(或至少更加努力)做你想做的事情。
诀窍在于这一行:
$.get('/getmyData.asp?str=erServiceXUVC',function(string){
..
});
此行执行AJAX请求。当请求成功时,将调用回调函数,并将响应传递给参数string
。
因此,尽管有此请求,但会生成一个代码,然后将其与表单一起发回。在不检查实际环境的情况下我无法确定,但我认为AJAX请求取决于会话(可能通过cookie)。如果没有该会话,它可能会生成错误消息。
因此,要解决此问题,您必须获取该页面以及随附的任何Cookie。然后,在请求代码时,使用相同的cookie,因此服务器将在同一会话中看到该请求。
这很可能是防止垃圾邮件滥用表单的伎俩。因此,很难猜出可能有什么其他技巧,还有什么需要让它发挥作用。