使用selenium+java模拟登陆今日头条时需要手机验证码登陆,第二次怎么免输入信息登陆?
在使用selenium爬取今日头条时,想登陆之后爬取个人收藏内容。
第一次是通过手机验证码登进去,需要多次登陆,第二次如何可以不登陆,直接就爬取信息?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
在使用selenium爬取今日头条时,想登陆之后爬取个人收藏内容。
第一次是通过手机验证码登进去,需要多次登陆,第二次如何可以不登陆,直接就爬取信息?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
失效时间过短,不可取。
第一次登录之后,点击到个人页面,F12之后,F5,查看Application的COOKIES。
将登录需要的COOKIES存储进去,刷新界面。就可实现自动登录。
Cookie c1 = new Cookie("sso_login_status", "1");
//添加cookie
webDriver.manage().addCookie(c1);
首次通过手机验证码登录后,获取cookie,并将cookie保存到map中。
在主程序中定义map:
public static Map<String, String> cookies;
public static boolean first;
JRTT.first首次为true,之后为false;
mian方法中:
cookies = new HashMap<String, String>();
在selenium中:
(手动登录后获取当前cookie)
// 获得cookie
Set<Cookie> cookie = webDriver.manage().getCookies();
if (JRTT.first) {
// 保存登录的Cookies
for (Cookie ck : cookie) {
JRTT.cookies.put(ck.getName(), ck.getValue());
}
}
将原有缓存清空,添加保存的缓存
// 删除所有cookie
webDriver.manage().deleteAllCookies();
Cookie c;
// 将第一次登录的cookie保存
for (Map.Entry<String, String> entry : JRTT.cookies.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
c = new Cookie(key, value);
webDriver.manage().addCookie(c);
// System.out.println("key=" + key + " value=" + value);
}
// 刷新页面
webDriver.navigate().refresh();
cookie填进页面中。多次循环,不用手动输入。只需在程序首次执行时输入。