前言
很多时候我们做 Python 爬虫时或者自动化测试时需要用到 selenium 库,我们经常会卡在登录的时候,登录验证码是最头疼的事情,特别是如今的文字验证码和图形验证码。文字和图形验证码还加了干扰线,本文就来讲讲怎么绕过登录页面。
绕过登录方法
绕过登录基本有两种方法:
-
第一种方法是登录后查看网站的 cookie,请求 url 的时候把 cookie 带上,第二种方法是启动浏览器带上浏览器的全部信息,包括添加的书签和访问网页的 cookie 信息。
-
第一种 cookie 方法我们要分析别人网站的 cookie 值,找出相应的值然后添加进去,对于我们不熟的网站,他们可能也会做加密或者动态处理,所以有些网站也不是那么好操作。如果是自己公司的网站需要测试,我们可以询问对应的开发那个 cookie 值是区分独立用的值,拿出来放在请求里面就行。
添加 cookie 绕过登录
比如我们登录百度账号比较费劲,每次都需要登录也比较繁琐,我们 F12 打开页面调试工具,登录后找到 www.baidu.com 文件,在 cookie 中,我们发现很多值,其中图中圈起来的就是我们要找的值。

我们在访问 baidu 链接的时候加上这个 cookie 值,这样就是直接登录后的百度账号了。
加载 Chrome 用户默认数据绕过登录
们每次打开浏览器做相应操作时,对应的缓存和 cookie 会保存到浏览器默认的路径下,我们先查看个人资料路径,以 chrome 为例,我们在地址栏输入 chrome://version/

图中的个人资料路径就是我们需要的,我们去掉后面的 \Default,然后在路径前加上「–user-data-dir=」就拼接出我们要的路径了。
profile_directory = r'--user-data-dir=C:\Users\xxx\AppData\Local\Google\Chrome\User Data'
接下来,我们启动浏览器的时候采用带选项时的启动,这种方式启动浏览器需要注意,运行代码前需要关闭所有的正在运行 chrome 程序,不然会报错。全部代码如下。
from time import sleep
from selenium import webdriver
profile_directory = r'--user-data-dir=C:\Users\admin\AppData\Local\Google\Chrome\User Data'
option = webdriver.ChromeOptions()
option.add_argument(profile_directory)
driver = webdriver.Chrome(chrome_options=option)
driver.get('https://www.baidu.com/')
sleep(3)
执行代码运行程序,selenium 自动化启动浏览器后我们会发现我之前保存的书签完整在浏览器上方,baidu 账号也是登录的状态。
绕过图形验证码的网站(简书)
我们登录简书后(cookie 有一定的时效,貌似有 10 天半个月左右),把上面代码中的链接换成简书的,再用上面的方法觉可以实现绕过登录页的图形验证码。
总结
我们我Chrome中手动操作网页登录后发现再次打开网站无需登录这种情况,我们都可以通过上文提到的方法解决。
但有些网站管你怎么样,次次都得登录。么办法,老老实实破解呗。 |