0
点赞
收藏
分享

微信扫一扫

python某同城验证码处理

书坊尚 2022-04-04 阅读 42
python

某同城接入了某验的验证码体系来应对反爬,当你的cookie有问题还访问频繁访问就会触发验证码,构造动态的cookie可以有效减少验证次数,验证码的验证方式是随机的,目前遇到的有以下几种

1、点击验证,这个没啥说的,当提示需要验证时,会出现302跳转,我们只需要获取跳转的url使用selenium打开,使用selenium获取按钮并点击就可以成功绕过,绕过后会跳转到首页

2、点击后,出现选点验证,如下图

这个目前代码是没有办法处理的,只能借助第三方平台如“超级鹰”,使用selenium获取图片元素,并使用selenium元素截图

# 获取验证码元素
geetest_widget = driver.find_element(by=By.CLASS_NAME, value='geetest_widget')
img = geetest_widget.screenshot_as_png  # 元素截图

不用保存,直接使用超级鹰提供的接口将img传给超级鹰后台,超级鹰会返回一个字典,字典中的pic_str的值是类似于这样的字符串213,213|213,213   其中|分割每一个点位,逗号分割x坐标和y坐标,使用selenium的动作链点击验证码图片,最后点击确认就能成功绕过

action_obj = ActionChains(driver)
xy_list = coord['pic_str'].split('|')  # 数据格式['213,213', '213,213']
for coo in xy_list:
    time.sleep(random.random())
    xy = coo.split(',')
    # 过点击验证,验证码图片点击                验证码元素        x坐标 y坐标
    action_obj.move_to_element_with_offset(geetest_widget, xy[0], xy[1]).click().perform()

3、滑块验证

碰到这种验证是几率比较小的,如下图

 和上述步骤类似将图片传给超级鹰,超级鹰会返回一个x坐标,使用selenium滑动到指定位置即可

for i in range(0, int(coord['pic_str'])):
    time.sleep(random.random())
    # 鼠标按住并滑动
    action_obj.move_by_offset(i, 0).perform()
# 鼠标释放
action_obj.release()
举报

相关推荐

0 条评论