专栏首页佛系编程人讲讲Python爬虫绕过登录的小技巧

讲讲Python爬虫绕过登录的小技巧

本文转载自Python知识圈,禁二次转载

阅读文本大概需要 5 分钟。

前言

很多时候我们做 Python 爬虫时或者自动化测试时需要用到 selenium 库,我们经常会卡在登录的时候,登录验证码是最头疼的事情,特别是如今的文字验证码和图形验证码。文字和图形验证码还加了干扰线,本文就来讲讲怎么绕过登录页面。

登录页面的验证,比如以下的图形验证码。

还有我们基本都看过的 12306 的图形验证码。

绕过登录方法

绕过登录基本有两种方法,第一种方法是登录后查看网站的 cookie,请求 url 的时候把 cookie 带上,第二种方法是启动浏览器带上浏览器的全部信息,包括添加的书签和访问网页的 cookie 信息。

第一种 cookie 方法我们要分析别人网站的 cookie 值,找出相应的值然后添加进去,对于我们不熟的网站,他们可能也会做加密或者动态处理,所以有些网站也不是那么好操作。如果是自己公司的网站需要测试,我们可以询问对应的开发那个 cookie 值是区分独立用的值,拿出来放在请求里面就行。

比如我们登录百度账号比较费劲,每次都需要登录也比较繁琐,我们 F12 打开页面调试工具,登录后找到 www.baidu.com 文件,在 cookie 中,我们发现很多值,其中图中圈起来的就是我们要找的值。

我们在访问 baidu 链接的时候加上这个 cookie 值,这样就是直接登录后的百度账号了。

下载浏览器驱动

我们要 selenium 启动浏览器时,需要下载后对应的驱动文件并放在 Python 安装的根目录下,比如我会用到谷歌 Chrome 浏览器和 Firefox 火狐浏览器。

谷歌浏览器驱动下载地址:

http://chromedriver.storage.googleapis.com/index.html

火狐浏览器驱动下载地址:

https://github.com/mozilla/geckodriver/releases/

启动 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 程序,不然会报错。全部代码如下。

selenium 自动化启动浏览器后我们会发现我之前保存的书签完整在浏览器上方,baidu 账号也是登录的状态。

启动 Firfox 浏览器绕过登录

Firfox 火狐浏览也可以这样启动它,设置略有不同。

首先,查看配置文件的存储路径,查看方法:帮助–故障排除信息–配置文件夹,把里面的路径复制过来就行。

同样,我们把路径放在变量中。

profile_path = <span class="hljs-string">r'C:\Users\guixianyang\AppData\Roaming\Mozilla\Firefox\Profiles\dvm6wqam.default'</span>

我们也在火狐浏览器中登录好百度的账号,用 selenium 自动化启动带配置文件的火狐浏览器,也会发现启动时已经启动了浏览器安装的插件和登录好的百度账号。

绕过图形验证码的网站

文中第一个图是简书登录时的图形验证码,我们登录简书后(cookie 有一定的时效,貌似有 10 天半个月左右),把上面代码中的链接换成简书的,再用上面的方法觉可以实现绕过登录页的图形验证码。

比如我直接打开我的简书个人主页

https://www.jianshu.com/u/52353ffa8b86

自动化启动后也是保留了登录的状态。

网站的登录大门已被打开,接下来就可以做自己想做的事情了,比如爬虫、自动化测试验证之类的。

PS:以上技巧对有些网站可能不管用,但是对大部分网站还有适用的,觉得本文小技巧有用的自己赶紧试试吧。

本文分享自微信公众号 - 佛系编程人(py520llj),作者:pk 哥

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 爬虫 | 周末不知道看啥电影?不存在的

    最近不知道为什么很想看电影,但又不知道什么电影好看,就想去豆瓣找找,之前学了一点简单的爬虫,刚好可以用来练练手。内容比较长,可以边听音乐边看,嘻嘻~

    佛系编程人
  • Django | 创建我们的第一个应用

    佛系编程人
  • 实战项目:飞机大战

    运行程序,英雄飞机出现在屏幕底边的中央区域,飞机中央每隔一秒会自动发射一枚子弹。随着游戏的开始,敌机会在屏幕上方随机不定时的出现在屏幕内向下飞行。英雄飞机需要通...

    佛系编程人
  • 1708: [Usaco2007 Oct]Money奶牛的硬币

    1708: [Usaco2007 Oct]Money奶牛的硬币 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 5...

    HansBug
  • 学不会的JVM

    首先我们写的源文件叫.java文件,然后点击IDE的运行在硬盘会生成.class字节码文件,接着Java虚拟机从硬盘加载.class字节码文件,再者内部操作和解...

    Howl
  • C# 空合并操作符(??)不可重载?其实有黑科技可以间接重载!

    发布于 2018-09-15 14:59 更新于 2018-12...

    walterlv
  • Matlab函数kmeans:K-均值聚类

    K-means聚类算法采用的是将N*P的矩阵X划分为K个类,使得类内对象之间的距离最大,而类之间的距离最小。 使用方法: Idx=Kmeans(X,K...

    AIHGF
  • 扩展方法IEnumerable<T>转换为IList<SelectListItem> ,提供@Html.DropDownList使用

    由于在MVC中经常会使用到@Html.DropDownList方法,而该方法接收的是List<SelectListItem> 参数,因此就想着写一个扩展方法,直...

    写代码的猿
  • 从华为 Mate9看国产高端手机市场

    引言 从2016年第4季度腾讯大数据的报告中,我们已经看到了,作为活跃移动设备品牌TOP1的华为,其优秀的业绩表现。 尤其是,35岁以上年龄群用户对华为的偏好,...

    腾讯大数据
  • leetcode 7 Reverse Integer

    @坤的

扫码关注云+社区

领取腾讯云代金券