【Python成长之路】破解Boss直聘网站滑块验证
哈喽大家好,我是鹏哥。
今天要记录的内容是 —— 破解Boss直聘网站的滑块验证。
…… 上 课 铃……
TuesdayBurak Yeter;Danelle Sandoval - Tuesday
1
写在前面
最近领导安排我投入公司招聘工作,然后自然就需要不停地在boss直聘网上进行人才搜索。搞了几天我就觉得无趣又繁琐,那就干脆爬虫下吧。由于boss直聘网站的网页设计代码写的比较好,获取元素也很方便,因此不到十分钟就写完了界面登录的selenium代码。原以为很简单的滑块验证,却让我烦恼了好久!
下面让我一步步来讲下我遇到的坑以及相应的解决方法
2
跳坑过程
# coding=utf-8
# @公众号 : "鹏哥贼优秀"
# @Date : 2020/3/20
# @Software : PyCharm
# @Python version: Python 3.7.2
from selenium import webdriver
from slide_solution import *
import time
def visit_website(url):
driver = webdriver.Chrome('F:\\Python成长之路\\chromedriver.exe')
driver.maximize_window()
driver.get(url)
time.sleep(1)
# 输入帐户密码
driver.find_element_by_name('account').send_keys('手机号')
driver.find_element_by_name('password').send_keys('password')
slide_btn = driver.find_element_by_css_selector('span[class="nc_iconfont btn_slide"]')
# 滑块解决方法1
slide_solution1(slide_btn,driver)
time.sleep(1)
driver.find_element_by_class_name('btn').click()
time.sleep(5)
driver.quit()
if __name__ == "__main__":
url = 'https://login.zhipin.com/?ka=header-login'
visit_website(url)
这是登录boss的主要代码,其中滑块验证的代码我是这么写的:
def slide_solution1(slide_btn,driver):
action = ActionChains(driver)
action.click_and_hold(slide_btn).perform()
for i in range(200):
try:
action.move_by_offset(i*2,0).perform()
except:
break
action.reset_actions()
time.sleep(0.1)
我按每0.1移动2个像素的速度,将滑块从最左边移到右边,从现象来看效果也是可以的,滑块的确移过去了。(其实也可以不用慢慢移动,可以直接action.move_by_offset(276,0).perform()来直接实现,276是滑块验证的像素长度)。
但是坑来了!
代码移动滑块后,界面报错如下:
尝试解决方法1:
一开始针对这种问题,网上资料是比较多的,我很快就知道了,是因为网页的window.navigator.webdrive字段设置为true。从大神们的博客中了解到,相当于网站通过这个字段可以知道chrome是人为打开,还是代码启动的。因此,相应的解决方法很快出来了。
# 配置window.navigator.webdrive
option = webdriver.ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
driver = webdriver.Chrome('F:\\Python成长之路\\\滑块问题\\chromedriver.exe',options=option)
在启动chrome时,添加option,即停用开发者模式,这样就可以解决window.navigator.webdrive问题了,如下图所示。
尝试解决2:
很快我再次重试滑块时,发现仍然报一样的错误。这时候,网上的资料基本就不多了,对我的帮助也比较少。我猜测,可能是 ActionChains库的问题,有可能被网站检测到了。因此我想到了sikuli jar包。这个方法几乎可以实现任何的界面自动化,想了解的同学可以参考:
【Python成长之路】基于sikuli jar包,实现淘宝自动抢单功能(1)
这里相应的滑块移动代码如下:
def slide_solution2():
jvmPath = jpype.get_default_jvm_path()
# Djava.class.path是本地的sikuliapi.jar包路径,需要提前下载好
jpype.startJVM(jvmPath, '-ea', '-Djava.class.path=F:\\sikuli\\1\\sikulixapi.jar')
Screen = JClass('org.sikuli.script.Screen')
myscreen = Screen()
myscreen.drag('start.PNG','end.PNG')
time.sleep(0.5)
对应的图片如下:
end.png
start.png
因为从我的理解来看,用sikuli库相当于就是人为操作鼠标进行移动。结果很不幸,还是一样的报错!我去!这也不行?
然后我在打开的chrome界面,手动滑动滑块,发现也是报错。这时候,我觉得可能是chrome启动时就以为被判定为非人为操作,因此无论后面仍然的操作,都会失败!
3
滑块验证最终解决方法
看到一篇大神的文章《python selenium滑动验证防检测》(http://www.py3study.com/Article/details/id/19698.html),作者将chromedriver.exe文件进行了反编译并修改。竟然还有这种操作!
(1)下载wxMEdit工具,并打开chromedriver.exe;
(2)将key值 中$cdc改名,如下,改成$abc
(3)保存新的chromedriver.exe文件
(4)将代码中的chromedriver.exe替换成修改后的exe
成功了!
4
滑块验证的另一种解决方法
在查找资料时,发现有大神说,如果用firefox浏览器代替chrome,相同的代码可以直接成功!这个方法我就没去尝试了,需要下载特定的旧版本firefox,以及下载对应的驱动文件。不过网上关于firefox安装selenium插件的资料还是挺多的。
5
总结
在查找滑块解决方法时,很多同学都遇到了相同的问题,为了后续方便其他人跳坑 ,因此想到写些博客,方便后来的同学吧!
如果有同学需要,可以访问以下网站获取代码及修改后的chromedriver.exe:https://github.com/yuzipeng05/slide_solution.git
…… 下 课 铃……
【往期热门文章】:
【Python成长之路】10行代码教你免费观看无广告版的《庆余年》腾讯视频
【Python成长之路】如何用python开发自己的iphone应用程序,并添加至siri指令
【Python成长之路】从 零做网站开发 -- 基于Flask和JQuery,实现表格管理平台
点击下方诗句,可以留言互动喔
你对的人,正在马不停蹄,披星戴月,风雨兼程,你在等等。
【关注“鹏哥贼优秀”公众号,回复“python学习材料”,将会有python基础学习、机器学习、数据挖掘、高级编程教程等100G视频资料,及100+份python相关电子书免费赠送!】
扫描二维码
与鹏哥一起
学python吧!
【Python成长之路】破解Boss直聘网站滑块验证相关推荐
- java抓取网页数据_Golang丨Java丨Python爬虫实战—Boss直聘网站数据抓取
我们分别通过Golang.Python.Java三门语言,分别实现对Boss直聘网站的招聘数据进行爬取. 首先打开Boss直聘网站: 然后我们在职位类型中输入Go或者Golang关键字: 然后我们可以 ...
- python基于大数据的boss直聘数据招聘职位分析系统django
本项目主要利用python技术爬取BOSS直聘网站上的岗位信息,进行对比分析UI设计师与产品经理两个职位的趋势.爬取字段:工作地点,薪资范围,学历要求,工作经验,公司性质等. 模拟登陆BOSS直聘网站 ...
- BOSS直聘网站数据分析岗位信息爬取
Boss直聘网站已改用ajax了,可以改用selenium库爬取,下面爬虫已过时,但数据分析方法还是可以用的,数据分析全部代码都已给出. 语言:Python3 目录 一.信息爬取 二.数据分析 2.1 ...
- 写一个爬虫爬取boss直聘网站
好的,我可以为您简要介绍如何编写一个爬虫来爬取 BOSS 直聘网站. 首先,您需要准备好以下几个东西: 安装 Python,并使用 pip 安装爬虫所需的库,如 requests 和 Beautifu ...
- python爬虫招聘-Python爬虫实战-抓取boss直聘招聘信息
实战内容:爬取boss直聘的岗位信息,存储在数据库,最后通过可视化展示出来 PS注意:很多人学Python过程中会遇到各种烦恼问题,没有人帮答疑容易放弃.为此小编建了个Python全栈免费答疑.裙 : ...
- Python爬虫:爬取“Boss直聘”招聘数据
hello 大家好~ 又是元气满满的一天呢~ 既然元气满满,要不要搞点事情,譬如说,爬取"Boss直聘"(此处模仿歪果仁讲话更带感)的招聘数据~ 说走咱就走,说干咱就干~" ...
- 爬取BOSS直聘信息并进行清理和可视化分析(python小白)
年底了,学习数据分析快四个月了.为了尽快找到一份数据分析相关的工作,计划把BOSS直聘上的相关职位都爬取下来分析分析,也好检验一下最近的学习成果.python新手,代码写的乱,将就看吧.首先,对给BO ...
- python分析BOSS直聘的某个招聘岗位数据
前言 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加高深的知识. 那么针对这三类人,我给大 ...
- boss直聘python_爬Boss直聘,分析2019下半年Python工作现状
引子 要说在当今的编程圈,找10位程序猿询问下当前世界上最好的语言是哪个,那必须是 PHP(强迫症)!但是如果你询问当今最火爆的语言是哪个,那么80%的小伙伴儿会毫不犹豫的告诉你,是 Python! ...
最新文章
- RNN的优秀变种: LSTM GRU
- 用 gson 替换 fastjson 引发的线上问题分析
- poj 3304 Segments (几何 : 线段 直线相交)
- 【机器学习】HOG+SVM进行车辆检测的流程及源码
- springboot 使用interceptor 返回前端http状态码为0
- 数据可视化(二)Matplotlib pandas简易入门
- mysql 5.0.22_mysql-5.0.22安装
- 中国版MSN慈善缘何遇冷:白领网民参与只为时尚(转自--竞报)
- Java案例:基于TCP的简单聊天程序
- (74)FPGA面试题-Verilog序列发生器,产生 10110 的序列
- HarmonyOS 实战——服务卡片初探索
- 无线网卡在使用过程突然不好使的解决方法,Deepin Linux 15.9与Windows 10双系统
- Python将word转化为txt文本
- httpClient4 设置代理
- CSS设置div上下居中
- 常用的数学基础知识集锦
- ios之Xcode6如何手动创建空工程模板
- excel排序求和:如何统计前几名数据合计 下篇
- java创建tensorfly对象,Tensorflow对象检测自定义数据集
- FBX导入错误 :ImportFBX Errors:
热门文章
- 例题:用“ * ”打印出等腰三角形
- 大学计算机实验二报告表答案,北理大学计算机实验基础实验二实验报告表答案(1页)-原创力文档...
- set 集合 拷贝的操作
- 远光软件:区块链+公益,让慈善更透明
- pytest-xdist:并发执行用例设计(脱坑)
- 中南民族大学复试c语言题库,2016年中南民族大学生物医学工程学院C程序设计考研复试题库...
- Office提示您的许可证不是正版弹框解决
- 在哪些情况下你会毫不犹豫的选择辞职?
- USB转串口芯片:CH340
- 阿里Java社招面试真题200+:缓存+分布式+JVM+高并发+NIO+框架