金天牛

导航

selenium之跳过手机验证码登陆

使用selenium模拟用户登录时,还会碰到这样的情况:每次打开网页,都需要登录。

这个是没什么难度,但如果每次都让你进行人工验证,就很崩溃了,比如前面文章就写了验证码登录,滑块登录,就解决了一部分问题。

但现在又碰到过每次登录都需要输入手机验证码,这不就让人抓狂了嘛!那有什么解决办法呢?

方法1:电脑连接手机。登录时发送验证码到的手机卡装在手机里,通过读取手机信息来输入验证码。解决一个问题,需要一直连接一个手机和手机卡,成本太高啊,那有没有更好的解决办法呢?当然有                          的,那就是方法2。

方法2:携带cookies登录。首先人工登录一次,登录后获取cookies信息,保存在本地,以后每次登录都读取cookies,登录成功后,更新本地cookies,以便后续使用。

思路有了,直接上干货:

第一次运行时,去掉77 和78  行注释,人工登录,会保存cookies到本地文件。

后续再次运行时,注释77 和78  行,只需要运行79和80行即可。

如果cookies过期时间比较快,可以定时登录来更新cookies。

 1 from selenium import webdriver
 2 import time
 3 import json
 4 
 5 
 6 def browser_first():
 7     """"
 8     进行浏览器初始化
 9     """
10     options = webdriver.ChromeOptions()
11     options.add_argument("--disable-blink-features=AutomationControlled")
12     browser = webdriver.Chrome(options=options)  # 打开浏览器
13     browser.maximize_window()  # 浏览器最大化
14     log_url = 'https://seller.shopee.ph/'
15     return log_url, browser
16 
17 
18 def get_cookies(log_url, browser):
19     """
20     获取cookies保存至本地
21     """
22     browser.get(log_url)
23     time.sleep(120)  # 进行扫码
24     dictCookies = browser.get_cookies()  # 获取list的cookies
25     jsonCookies = json.dumps(dictCookies)  # 转换成字符串保存
26 
27     with open('cookie.txt', 'w') as f:
28         f.write(jsonCookies)
29     print('cookies保存成功!')
30 
31 
32 def browser_second():
33     """"
34     浏览器初始化,并打开大麦网购票界面(未登录状态)
35     """
36     options = webdriver.ChromeOptions()
37     options.add_argument("--disable-blink-features=AutomationControlled")
38     browser = webdriver.Chrome(options=options)  # 打开浏览器
39     browser.maximize_window()  # 浏览器最大化
40     browser.get('https://seller.shopee.ph/')
41     return browser
42 
43 
44 def login_shop(browser):
45     """
46     从本地读取cookies并刷新页面,成为已登录状态
47     """
48     with open('cookie.txt', 'r', encoding='utf8') as f:
49         listCookies = json.loads(f.read())
50 
51     # 往browser里添加cookies
52     for cookie in listCookies:
53         cookie_dict = {
54             'domain': '.shopee.ph',
55             'name': cookie.get('name'),
56             'value': cookie.get('value'),
57             "expires": '',
58             'path': '/',
59             'httpOnly': False,
60             'HostOnly': False,
61             'Secure': False
62         }
63         browser.add_cookie(cookie_dict)
64     browser.get('https://seller.shopee.ph/')
65     browser.refresh()  # 刷新网页,cookies才成功
66 
67     time.sleep(2)  # 登录后等待下
68     dictCookies = browser.get_cookies()  # 获取list的cookies
69     jsonCookies = json.dumps(dictCookies)  # 转换成字符串保存
70 
71     with open('cookie.txt', 'w') as f:
72         f.write(jsonCookies)
73     print('cookies保存成功!')
74 
75 
76 if __name__ == "__main__":
77     # tur = browser_first()
78     # get_cookies(tur[0], tur[1])
79     browser = browser_second()
80     login_shop(browser)

参考:https://blog.csdn.net/weixin_43821172/article/details/105199481

posted on 2023-07-11 11:57  金天牛  阅读(864)  评论(0编辑  收藏  举报