java模拟登陆时,post提交,对方网页提交时是鼠标onclick触发数据交流的,我该怎么弄?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java模拟登陆时,post提交,对方网页提交时是鼠标onclick触发数据交流的,我该怎么弄?相关的知识,希望对你有一定的参考价值。

目前我是用HttpClient进行模拟,以前没用过,不知道怎么处理了,请多多指教.
是BS结构的. 问题就是:我用程序来实现我的账号登陆目标网站,但是目标网站表单提交时是通过js的onclick事件后才进行数据交流. 目前我使用HttpClient没找到解决办法.

通过url传递参数那是肯定不行的了. 目标网页是通过Ajax局部提交数据的.那个高手拯救拯救小的吧.

他的onclick事件一定是提交表单给服务器,表单中有多个参数,你如果知道服务器url,你就直接在java中访问那个url?参数1=...&参数2=..
不就达到了点击效果吗?前提是你要知道那些参数的名字。。
----------------------------------
在js文件中,其实也是去访问一个url啊,把参数一起传过去的,你只要知道url就好办了!
----------------------------------
那你也可以用js代码发送Ajax请求啊,只要把服务器对你的请求返回的数据进行解析就可以了,我没有做过这个事情,只会纸上谈兵,见谅!
参考技术A 你用ff跟踪一下就知道他的ajax提交到哪个地址,都提交了哪些参数。这样你就可以用程序来实现了。 参考技术B 把你要提交的参数放到session中传输过去!! 参考技术C CS?

BS?

具体想问什么?

java使用httpurlconnection模拟登陆时404,FileNotFoundException

这是网址http://ecard.gdqy.edu.cn/loginstudent.action。要post参数过去才能登陆,浏览器可以直接打开,但是使用httpurlconnection就会404报错。我怀疑是服务端判定是不是浏览器访问了,设置了User-Agent也没有用。
用了一个在线测试的工具也是404

原因:
4.0中设置httpCon.setDoOutput(true),将导致请求以post方式提交,即使设置了httpCon.setRequestMethod("GET");
将代码中的httpCon.setDoOutput(true);删除即可!
参考技术A 楼主,登录相关的fields填什么,不知道信息,没法测试

可以使用HTTP抓包看看浏览器时,提交了使用信息本回答被提问者和网友采纳

以上是关于java模拟登陆时,post提交,对方网页提交时是鼠标onclick触发数据交流的,我该怎么弄?的主要内容,如果未能解决你的问题,请参考以下文章

python 关于post和get的区别

如何用C/C++模拟post提交数据,获得http相应。

curl 模拟登陆后携带 Cookie 进行 POST 提交报文

java使用httpurlconnection模拟登陆时404,FileNotFoundException

php模拟post方式访问网页,显示盗用页面无法访问

python 关于post和get的区别