使用java和jaunt api登录网页时出现问题
所以我尝试使用Jaunt登录到一个网页。首先要提到的是网页是.aspx,提交按钮有一个选项使用java和jaunt api登录网页时出现问题,java,authentication,jaunt-api,Java,Authentication,Jaunt Api,所以我尝试使用Jaunt登录到一个网页。首先要提到的是网页是.aspx,提交按钮有一个选项onclick=“javascript:WebForm\u DoP…”,据我所知,Jaunt不支持javascript,对吗? 如果我错了,我使用的代码就是Jaunt示例中的代码: Form form = userAgent.doc.getForm(0); form.setTextField("Login1$UserName","USER"); form.setPas
onclick=“javascript:WebForm\u DoP…”
,据我所知,Jaunt不支持javascript,对吗?
如果我错了,我使用的代码就是Jaunt示例中的代码:
Form form = userAgent.doc.getForm(0);
form.setTextField("Login1$UserName","USER");
form.setPassword("Login1$Password","PASSWORD");
form.setCheckBox("Login1$RememberMe",false);
form.submit("GO");
System.out.println(userAgent.getLocation());
所有名称和值都正确,并且用户和密码有效,因为我可以使用web浏览器登录。执行代码后,在输出中,我得到以下结果:
消息:UserAgent.sendPOST;连接错误请求URL:
[张贴
__VIEWSTATE=%2WEPDWUJLTK5MDC0NJQ2ZBBR5FX0NVBNRYB2XZUMVXDWLYZVBVC3RCYWNRS2V5x18WAGurtG9NAW4xJFJLBWVTYMVYTWUFF0xVZ2LUMSRB2DPKLKLYWDLQNV0DG9UPPCARODJIWPEMT8HCMFAN6IMWI%3D&u VIEWSTATEGENERATOR=CA0B0334&Login1%24UserName=USER&Login1%24Password=PASSWORD&Login1%24Login1%24LoginButton=GO]
答复:[无]
表格div如下所示:
<form name="form1" method="post" action="Default.aspx" onsubmit="javascript:return WebForm_OnSubmit();" id="form1" style="text-align:center">
你知道我有什么问题吗?如果Jaunt不允许我登录,有人能推荐我一个用于网络抓取和交互的库吗?谢谢 你好像被卡住了。实际上,aspx页面使用AJAX分页。您必须提取uuu VIEWSTATE、uuu VIEWSTATEGENERATOR和所有其他表单值的值,然后在请求正文中使用POST方法发送它们。您可以使用获取包含所有这些隐藏变量和表单条目的请求正文 在Java中,您可以使用Selenium或HTMLUnit,这是一种支持JavaScript的无Java GUI浏览器,用于重新运行网页 编辑:你也可以使用JauntAPI,我刚刚用它试过,你所做的就是发送一个POST请求和请求正文,你可以很容易地用Fiddler检查它,它可以工作 HTTP POST中的表单值以与querystring相同的格式在请求体中发送。您可以使用Fiddler检查链接的请求正文,然后从Textview复制请求正文,并将编码数据作为请求正文发送
UserAgent userAgent = new UserAgent();
userAgent.sendPOST("<your link to form page>","<request body>");
UserAgent UserAgent=newuseragent();
userAgent.sendPOST(“,”);
你能说得更清楚些吗?你说的标题是什么意思?你能写代码来解释吗?如果仍然不清楚,请给我一个.aspx链接,我会为你提供方法,比如说facebook登录页面。它使用https,一个安全的通道,你不能只获取请求消息。。为我提供一个使用http连接的简单链接。你是说jaunt不支持它?因为我可以使用标准java库登录(而不是在facebook的另一个https登录页面上)。java.net.URL URL=新URL(空,登录页面,新sun.net.www.protocol.https.Handler());Jsoup可以很好地完成这项任务。只需选择表单,使用((FormElement)doc.select(“form[name=form1]”)将其转换为表单元素。formData()并使用API发送表单。您可以使用Jsoup解析Jsoup。parse(html)查看