很多时候我们需要使用Selenium库来执行Python爬虫或自动测试,但是我们经常会在登录时因为验证代码而卡住,特别头疼。尤其是现在的图形认证代码和移动滑块验证码,连最简单的文本数字验证代码也被加了干扰线。比如以下的图形验证码。
私信小编01 领取学习教程
还有我们基本都看过的 12306 的图形验证码。
还有这种滑块验证码
如果直接进行登录的话这些验证码破解起来的话都会比较的麻烦,费时费力,所以我们想想有没有办法绕过这个登录过程。其实是有的,下面我们就来讲讲如何绕过这个登录
绕过登录基本有两种方法:
第一种 cookie 方法我们要分析别人网站的 cookie 值,找出相应的值然后添加进去,对于我们不熟的网站,他们可能也会做加密或者动态处理,所以有些网站也不是那么好操作。如果是自己公司的网站需要测试,我们可以询问对应的开发那个 cookie 值是区分独立用的值,拿出来放在请求里面就行。
添加cookie绕过登录
比如我们登录百度账号比较费劲,每次都需要登录也比较繁琐,我们 F12 打开页面调试工具,登录后找到 www.baidu.com 文件,在 cookie 中,我们发现很多值,其中图中圈起来的就是我们要找的值。
我们在访问 baidu 链接的时候加上这个 cookie 值,这样就是直接登录后的百度账号了。
运行之后会发现selenium刚打开浏览器时未登录
但是刷新之后页面就变成登录了
可见我们成功的绕开了输入账号密码阎验证码登录这个过程。
带上浏览器的信息启动
这个方法其实就是我们实现在浏览器中对该网站进行登录,对应的缓存和 cookie 会保存到浏览器默认的路径下,当我们使用selenium打开浏览器时,把浏览器的所有信息资料都添加进去,打开网站之后我们之前登录保存的cookie就会启用,直接就是已登录状态。
我们先查看个人资料路径,以 chrome 为例,我们在地址栏输入 chrome://version/
图中的个人资料路径就是我们需要的,我们去掉后面的 Default,然后在路径前加上–user-data-dir=就能拼接出我们要的路径了。
接下来,我们启动浏览器的时候采用带选项时的启动,这种方式启动浏览器需要注意,运行代码前需要关闭所有的正在运行 chrome 程序,不然会报错。
selenium 自动化启动浏览器后我们会发现之前保存的书签完整在浏览器上方,baidu 账号也是登录的状态。