破解滑块验证码(geetest极验)
破解滑块验证码(geetest极验) 最近写爬虫遇到极验(geetest)的滑块验证码,首先想到的是用Selenium模拟人拖动滑块,那么问题来了其实主要解决下面两个问题 拖动的距离是多少 怎么模拟出像人一样再滑动 滑动距离 先来解决第一个问题,我们怎么计算拖动距离,打开chrome的审查元素查看需要拖动的图片 <div class="geetest_canvas_img geetest_absolute" style="display: block;"> <div class="geetest_slicebg geetest_absolute"> <canvas class="geetest_canvas_bg geetest_absolute" height="160" width="260"></canvas> <canvas class="geetest_canvas_slice geetest_absolute" width="260" height="160"></canvas> </div> <canvas class="geetest_canvas_fullbg geetest_fade geetest_absolute" height="160" width="260" style="display: none;"></canvas> </div> 发现有三个canvas 对应三张图片大小都是 260* 160 ,我们使用selenium执行 js 转成 base64 后再转成图片都保存下来看一下,第一张 geetest_canvas_bg 是有缺口的图片 im_bg_b64 = driver.execute_script( 'return document.getElementsByClassName("geetest_canvas_bg geetest_absolute")[0].toDataURL("image/png");') # base64 encoded image im_bg_b64 = im_bg_b64.split(',')[-1] im_bg_bytes = base64.b64decode(im_bg_b64) with open('./temp_bg.png', 'wb') as f: f.write(im_bg_bytes) 然后第二张 geetest_canvas_slice 根据上面相同的方法保存到本地是这样的,就是一个滑块...