java爬虫使用cookie模拟登录的问题

SanHydra 2017-05-04 05:41:03
我用的是htmlunit框架,废话不多说,直接上码,首先是我获取登录状态cookie的代码

public Set<Cookie> login() throws IOException {
WebClient wc=new WebClient();
URL url = new URL("https://www.numberingplans.com/?page=account&sub=login");
WebRequest request=new WebRequest(url);
request.setCharset("UTF-8");
request.setAdditionalHeader("User-Agent",user_agents.get(12));
wc.getCookieManager().setCookiesEnabled(true);//开启cookie管理
wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
wc.getOptions().setThrowExceptionOnScriptError(false);
wc.getOptions().setCssEnabled(false);
wc.getOptions().setUseInsecureSSL(true);
wc.getOptions().setJavaScriptEnabled(true);
wc.getOptions().setTimeout(600000);
HtmlPage page=wc.getPage(url);
HtmlForm htmlForm = page.getForms().get(0);
HtmlInput password = htmlForm.getInputByName("password");
HtmlInput username = htmlForm.getInputByName("username");
HtmlInput login = htmlForm.getInputByValue("Login");
password.setValueAttribute(accounts[index]);
username.setValueAttribute(passwords[index]);
//点击登录按钮
login.click();
System.out.println("login!");
//获取cookie
Set<Cookie> cookies = wc.getCookieManager().getCookies();
wc.close();
return cookies;
}

这里的获取cookie,是获取成功了的,我用谷歌浏览器登录后查看对比得知。接下来就是,使用cookie的页面:

public IMEI queryIMEI(String imei) throws IOException {
WebClient wc=new WebClient();
WebRequest request=new WebRequest(new URL("https://www.numberingplans.com/?page=analysis&sub=imeinr"));
request.setCharset("UTF-8");
request.setAdditionalHeader("User-Agent",user_agents.get(12));
wc.getCookieManager().setCookiesEnabled(true);//开启cookie管理
wc.getOptions().setThrowExceptionOnScriptError(false);
wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
wc.getOptions().setCssEnabled(false);
wc.getOptions().setUseInsecureSSL(true);
wc.getOptions().setJavaScriptEnabled(false);
wc.getOptions().setTimeout(60000);
//设置cookies
for (Cookie cookie : cookies) {
wc.getCookieManager().addCookie(cookie);
}
HtmlPage page = wc.getPage("https://www.numberingplans.com/?page=analysis&sub=imeinr");
HtmlForm form = page.getFormByName("inputform");
HtmlInput i = form.getInputByName("i");
HtmlInput analyse = form.getInputByValue("analyse");
i.setValueAttribute(imei);
HtmlPage page2= analyse.click();
wc.close();
return parse(page2.asXml(),imei);
}

代码运行后,没有跳到登录后的界面,跳到了一个未登录的界面,还提示我必须登录才能进入。
我修改了user-agent,还有jsEnabled这些参数都没用……希望精通爬虫的大神救救急,积分全押上了!
...全文
578 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
解决了吗?假如我有Cookies能直接使用吗

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧