使用selenium+java模拟登陆今日头条时需要手机验证码登陆,第二次怎么免输入信息登陆?

Nicll 发布于 2018/06/04 09:08
阅读 2K+
收藏 0

在使用selenium爬取今日头条时,想登陆之后爬取个人收藏内容。

第一次是通过手机验证码登进去,需要多次登陆,第二次如何可以不登陆,直接就爬取信息?

 

加载中
0
Nicll
Nicll

首次通过手机验证码登录后,获取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填进页面中。多次循环,不用手动输入。只需在程序首次执行时输入。

0
Nicll
Nicll

第一次登录之后,点击到个人页面,F12之后,F5,查看Application的COOKIES。

将登录需要的COOKIES存储进去,刷新界面。就可实现自动登录。

Cookie c1 = new Cookie("sso_login_status", "1");
//添加cookie
        webDriver.manage().addCookie(c1);

Nicll
Nicll
失效时间过短,不可取。
返回顶部
顶部