爬虫.自动化通过防人机验证

470 阅读3分钟

在当今数字化时代,网络爬虫和自动化技术在信息获取与处理领域发挥着极为关键的作用。然而,随着网络安全意识的不断提升以及对数据隐私保护的日益重视,众多网站纷纷设置了防人机验证机制,这犹如一道坚固的壁垒横亘在爬虫与自动化任务面前。这些防人机验证措施形式多样,从传统的验证码输入,到基于行为分析的滑动验证、点选验证等,其目的均在于有效区分真实人类用户与自动化程序,从而保障网站的正常运营秩序与数据安全。但对于合法合规且有实际需求的爬虫与自动化应用场景而言,如何巧妙地突破这些防人机验证关卡,成为了亟待解决的重要课题。

本文主要讲防人机验证的类型,详细阐述如何借助 Selenium 这一强大工具来有效应对并解决这些防人机验证所带来的难题

  1. 第一种情况,数字验证码认证 如图所示a.jpg

首先第一步要得到验证码图片,这边用request,或者用selenium都可以只要能获取到图片就行,我就不做过多演示 直接看到关键代码

from  chaojiying_Python.chaojiying import Chaojiying_Client 导包,超级鹰
yzm_img = dirver.find_element(By.XPATH, 'XPATH图片位置')#也可以用id 或者class来定位
yzm_img.screenshot(r'yzm.png')
# 创建超级鹰对象,具体操作见最后
chaojiying = Chaojiying_Client('超级鹰账号', '密码', '你在超级鹰建立的软件ID')
im = open(r'yzm.png', 'rb').read()#读取你截取的图片
yzm= chaojiying.PostPic(im, 验证码类型)['pic_str']#超级鹰识别验证码
WebDriverWait(dirver, 10).until(
    EC.element_to_be_clickable((By.ID, '输入框ID'))#显示等待输入验证码
).send_keys(yzm)

2.第二种情况 文字点选验证如图所示

image.png

同上也是要获取到图片(注意,电脑缩放要调到百分之一百) 关键代码

from chaojiying_Python.chaojiying import Chaojiying_Client
# 创建超级鹰对象
chaojiying = Chaojiying_Client('超级鹰账号', '密码', '你在超级鹰建立的软件ID')
im = open(r'yzm.png', 'rb').read()#读取你截取的图片
yzm= chaojiying.PostPic(im, 验证码类型)['pic_str']#超级鹰识别验证码
yzm_dic={}#创建验证码字典
# 将超级鹰返回的字符串,处理成xy坐标,并存入字典中
for i in yzm.split('|'):
    data=i.split(',')
    yzm_dic[data[0]]=data[1]
# 点击验证码
#鼠标行为连
for x,y in yzm_dic.items():
    action= ActionChains(self.driver)
    action.move_to_element_with_offset( yzm_img, int(x), int(y)).click().perform()

最后附上超级鹰的使用方法(其它软件也行,我也看了豆包,没找到这个功能) 首先建立一个软件

image.png

image.png

image.png 在价格体系里可以找到你要识别的验证码种类

image.png

image.png里面有一个这样的文件夹,复制下来,黏贴在你写的项目的文件夹里,然后跟上面代码一样使用就行了

第一次写这种文章,有什么不足的感谢指点(抱拳)