15.网络爬虫—selenium验证码破解

这篇具有很好参考价值的文章主要介绍了15.网络爬虫—selenium验证码破解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言
🏘️🏘️个人简介:以山河作礼。
🎖️🎖️:Python领域新星创作者,CSDN实力新星认证
📝​📝第一篇文章《1.认识网络爬虫》获得全站热榜第一,python领域热榜第一
🧾 🧾第四篇文章《4.网络爬虫—Post请求(实战演示)》全站热榜第八
🧾 🧾第八篇文章《8.网络爬虫—正则表达式RE实战》全站热榜第十二
🧾 🧾第十篇文章《10.网络爬虫—MongoDB详讲与实战》全站热榜第八,领域热榜第二
🧾 🧾第十三篇文章《13.网络爬虫—多进程详讲(实战演示)》全站热榜第十二
🎁🎁《Python网络爬虫》专栏累计发表十四篇文章,上榜五篇。欢迎免费订阅!欢迎大家一起学习,一起成长!!
💕💕悲索之人烈焰加身,堕落者不可饶恕。永恒燃烧的羽翼,带我脱离凡间的沉沦。

一·selenium验证码破解

🧾 🧾网络爬虫是一种自动化程序,用于从Web页面中提取数据。然而,有些网站为了防止爬虫程序抓取数据,会加入一些验证码,使得程序无法自动化地完成数据采集任务。为了解决这个问题,我们可以使用selenium来破解验证码。

🧾 Selenium是一个开源的自动化测试工具,它可以模拟用户在浏览器中的操作,包括点击、输入等。使用selenium可以模拟用户手动输入验证码,从而实现验证码的破解

二·破解平台

首先我们介绍两个第三方破解平台:
第一款第三方打码平台是 :超级鹰

帮助开发者解决图像验证码的识别问题。它采用了最先进的图像识别技术,可以快速准确地识别各种形式的图像验证码,如数字、字母、中文、滑动拼图

第二款第三方平台是 :图灵

基于人工智能的定制化识别平台 可用于识别包括英数类型,中文类型,滑块类型等验证码,

打码平台超级鹰文识别

  • 超级鹰是一款第三方打码平台,可以帮助开发者解决图像验证码的识别问题。它采用了最先进的图像识别技术,可以快速准确地识别各种形式的图像验证码,如数字、字母、中文、滑动拼图等。
  • 超级鹰提供了简单易用的API接口,开发者只需调用接口即可将验证码提交给超级鹰进行识别,并获得识别结果。此外,超级鹰还提供了多种识别方式,如手动识别、自动识别、多人协作等,可以满足不同的识别需求。
  • 超级鹰的图文识别功能可以识别包含文字图片的验证码,比如滑动拼图验证码。它可以先将验证码图片拆分成多个小块,再对每个小块进行识别,最后将结果合并起来得到整个验证码的识别结果。这种识别方式可以大大提高验证码的识别准确率。

🎯1.首先我们登录注册,方便我们后面使用
15.网络爬虫—selenium验证码破解

🎯2.选择我们需要的价格体系,待会也会用到
15.网络爬虫—selenium验证码破解
🎯3.Python语言Demo下载
15.网络爬虫—selenium验证码破解
🎯4.获取软件Key和软件ID
15.网络爬虫—selenium验证码破解

15.网络爬虫—selenium验证码破解

基于人工智能的定制化识别平台 —图灵

🧾 🧾主页如下,包含各种验证码识别
15.网络爬虫—selenium验证码破解

🧾 识别接口说明
识别接口
15.网络爬虫—selenium验证码破解

识别请求参数说明
15.网络爬虫—selenium验证码破解

识别返回结果说明
15.网络爬虫—selenium验证码破解
python API调用代码

import base64
import json
import requests

# 复制以下代码,只需填入自己的账号密码、待识别的图片路径即可。
# 关于ID:选做识别的模型ID。

def b64_api(username, password, img_path, ID):
    with open(img_path, 'rb') as f:
        b64_data = base64.b64encode(f.read())
    b64 = b64_data.decode()
    data = {"username": username, "password": password, "ID": ID, "b64": b64, "version": "3.1.1"}
    data_json = json.dumps(data)
    result = json.loads(requests.post("http://www.tulingcloud.com/tuling/predict", data=data_json).text)
    return result

if __name__ == "__main__":
    img_path = r"C:/Users/Administrator/Desktop/file.jpg"
    result = b64_api(username="你的账号", password="你的密码", img_path=img_path, ID="你选用的模型ID(8位数字)")
    print(result)

到此为止,我们认识了两种用于破解验证码的平台,我们现在实战操作,方便大家理解学习

三·英文数字验证码破解

selenium破解验证码快捷登录古诗文网

🧾 我们来看一下我们的目标
15.网络爬虫—selenium验证码破解

🎯1.使用selenium自动化登录目标网站

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

service = Service(executable_path='D:\chorm\chromedriver_win32/chromedriver.exe')
driver = webdriver.Chrome(service=service)

url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
driver.get(url)

🎯2.通过行为链,输入账号密码,因为我没有注册,所以随便输入的,不过影响不大,我们需要的是输入正确的验证码。

# 账号输入
driver.find_element(By.ID, 'email').send_keys('xxxxx')
# 密码输入
driver.find_element(By.ID, 'pwd').send_keys('xxxx')

🎯3.然后获取验证码的照片到本地,方便我们待会调用接口来破解。

img_code = driver.find_element(By.ID, 'imgCode')
img_code.screenshot('img.png')  # 保存成图片

15.网络爬虫—selenium验证码破解

🎯4.调用接口,来破解验证码。

from chaojiying import Chaojiying_Client

chaojiying = Chaojiying_Client('xxxx', 'xxxxx', '96001')  # 用户中心>>软件ID 生成一个替换 96001
image = open('img.png', 'rb')  # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
pic_str = (chaojiying.PostPic(image.read(), 1004)['pic_str'])
image.close()

driver.find_element(By.ID, 'code').send_keys(pic_str)

🧾 🧾我们的目标就完成了,是不是很简单,后期把账号密码换成注册过的,就能实现自动登录和验证了

完整代码:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

service = Service(executable_path='D:\chorm\chromedriver_win32/chromedriver.exe')
driver = webdriver.Chrome(service=service)

url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
driver.get(url)

# 账号输入
driver.find_element(By.ID, 'email').send_keys('xxxxx')
# 密码输入
driver.find_element(By.ID, 'pwd').send_keys('xxxx')
# 获取验证码
img_code = driver.find_element(By.ID, 'imgCode')
img_code.screenshot('img.png')  # 保存成图片


from chaojiying import Chaojiying_Client

chaojiying = Chaojiying_Client('*****', '*****', ' 96001')  # 用户中心>>软件ID 生成一个替换 96001
image = open('img.png', 'rb')  # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
pic_str = (chaojiying.PostPic(image.read(), 1004)['pic_str'])
image.close()

driver.find_element(By.ID, 'code').send_keys(pic_str)

input()

四·滑动验证码破解

selenium滑动验证码破解网易网盾测试案例

🧾 我们来看一下我们的目标
15.网络爬虫—selenium验证码破解

🎯1.思路和破解英数验证码一样,使用selenium自动打开网址,然后通过行为链点击到上图这个页面。

service = Service(executable_path='D:\chorm\chromedriver_win32/chromedriver.exe')
driver = webdriver.Chrome(service=service)
driver.set_window_size(1100, 800)  # 将浏览器窗口大小设置为宽1100像素,高800像素。

url = 'https://dun.163.com/trial/sense'
driver.get(url)
print(driver.page_source)
wait = WebDriverWait(driver, 20)  # 等待20秒,有数据就进行操作,没有就报错
wait.until(PE((By.XPATH, '/html/body/main/div[1]/div/div[2]/div[2]/ul/li[2]'))).click()  # 点击可疑用户-滑动拼图

js = f'window.scrollTo(0,{300})'
driver.execute_script(js)  # 将当前页面滚动到垂直方向上300像素的位置。

🎯2.然后我们对出现的验证码进行截图:


# 点击验证码位置,方便弹出验证码图框
wait.until(PE((By.XPATH,
               '/html/body/main/div[1]/div/div[2]/div[2]/div[1]/div[2]/div[1]/div/div[2]/div[3]/div/div/div[1]/div[1]'))).click()

sleep(3)  # 休眠三秒,方便我们截图,防止验证码出现不及时

# 截图网页
driver.save_screenshot("html.png")

# 剪切滑动部分
img = Image.open("html.png")

# 剪切验证码的位置   图片的左上角和右下角 x和y轴
cropped = img.crop((563, 380, 1012, 608))

# 保存剪切的验证码照片
cropped.save("yzm.png")

15.网络爬虫—selenium验证码破解

15.网络爬虫—selenium验证码破解
15.网络爬虫—selenium验证码破解

15.网络爬虫—selenium验证码破解

🎯3.调用ApI接口对截取的验证码进行识别


# api接口

def b64_api(username, password, img_path, ID):  # 账户  密码  照片 ID
    with open(img_path, 'rb') as f:
        b64_data = base64.b64encode(f.read())
    b64 = b64_data.decode()
    data = {"username": username, "password": password, "ID": ID, "b64": b64, "version": "3.1.1"}
    data_json = json.dumps(data)
    result = json.loads(requests.post("http://www.tulingtech.xyz/tuling/predict", data=data_json).text)
    return result

15.网络爬虫—selenium验证码破解

🎯4.selenium 滑动线性 更加模拟人的行为进行点击

# selenium 滑动线性  更加模拟人去操作
def get_move_track(gap):
    track = []  # 移动轨迹
    current = 0  # 当前位移
    # 减速阈值
    mid = gap * 4 / 5  # 前4/5段加速 后1/5段减速
    t = 0.2  # 计算间隔
    v = 0  # 初速度
    while current < gap:
        if current < mid:
            a = 5  # 加速度为+5
        else:
            a = -5  # 加速度为-5
        v0 = v  # 初速度v0
        v = v0 + a * t  # 当前速度
        move = v0 * t + 1 / 2 * a * t * t  # 移动距离
        current += move  # 当前位移
        track.append(round(move))  # 加入轨迹
    return track

🎯5.讲破解出的数据交给代码,让他帮助我们输入并且通过行为链来拖动滑块填充拼图,完成验证码的验证。


x = int(result['data']['滑块']['X坐标值'])
q = int(result['data']['缺口']['X坐标值'])
ranges = int((q - x) * 0.68)

move_track = get_move_track(ranges)  # 将结果交给滑动线性函数

# 滑动代码

element = wait.until(PE((By.CLASS_NAME, 'yidun_jigsaw')))  # 滑块

ActionChains(driver).click_and_hold(element).perform()  # 通过行为链,按住它,然后执行
for i in move_track:  # 循环每次滑动的距离
    # 执行移动
    ActionChains(driver).move_by_offset(i, 0).perform()
ActionChains(driver).release().perform()  # 松开按键,完成滑动

运行结果:

智能无感知验证码_智能验证码_验证码API_在线体验

完整代码:

import base64
import json
from time import sleep
import requests
from PIL import Image  # pillow
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.expected_conditions import presence_of_element_located as PE
from selenium.webdriver.support.ui import WebDriverWait

service = Service(executable_path='D:\chorm\chromedriver_win32/chromedriver.exe')
driver = webdriver.Chrome(service=service)
driver.set_window_size(1100, 800)  # 将浏览器窗口大小设置为宽1100像素,高800像素。

url = 'https://dun.163.com/trial/sense'
driver.get(url)
print(driver.page_source)
wait = WebDriverWait(driver, 20)  # 等待20秒,有数据就进行操作,没有就报错
wait.until(PE((By.XPATH, '/html/body/main/div[1]/div/div[2]/div[2]/ul/li[2]'))).click()  # 点击可疑用户-滑动拼图

js = f'window.scrollTo(0,{300})'
driver.execute_script(js)  # 将当前页面滚动到垂直方向上300像素的位置。

# 点击验证码位置,方便弹出验证码图框
wait.until(PE((By.XPATH,
               '/html/body/main/div[1]/div/div[2]/div[2]/div[1]/div[2]/div[1]/div/div[2]/div[3]/div/div/div[1]/div[1]'))).click()

sleep(3)  # 休眠三秒,方便我们截图,防止验证码出现不及时

# 截图网页
driver.save_screenshot("html.png")

# 剪切滑动部分
img = Image.open("html.png")

# 剪切验证码的位置   图片的左上角和右下角 x和y轴
cropped = img.crop((563, 380, 1012, 608))

# 保存剪切的验证码照片
cropped.save("yzm.png")


# 调用api接口对照片验证码进行识别

def b64_api(username, password, img_path, ID):  # 账户  密码  照片 ID
    with open(img_path, 'rb') as f:
        b64_data = base64.b64encode(f.read())
    b64 = b64_data.decode()
    data = {"username": username, "password": password, "ID": ID, "b64": b64, "version": "3.1.1"}
    data_json = json.dumps(data)
    result = json.loads(requests.post("http://www.tulingtech.xyz/tuling/predict", data=data_json).text)
    return result


# 78915616

result = b64_api('****', '*****', "yzm.png", '78915616')

# 输出滑块和缺口的位置参数
print(result)


# selenium 滑动线性  更加模拟人去操作
def get_move_track(gap):
    track = []  # 移动轨迹
    current = 0  # 当前位移
    # 减速阈值
    mid = gap * 4 / 5  # 前4/5段加速 后1/5段减速
    t = 0.2  # 计算间隔
    v = 0  # 初速度
    while current < gap:
        if current < mid:
            a = 5  # 加速度为+5
        else:
            a = -5  # 加速度为-5
        v0 = v  # 初速度v0
        v = v0 + a * t  # 当前速度
        move = v0 * t + 1 / 2 * a * t * t  # 移动距离
        current += move  # 当前位移
        track.append(round(move))  # 加入轨迹
    return track


x = int(result['data']['滑块']['X坐标值'])
q = int(result['data']['缺口']['X坐标值'])
ranges = int((q - x) * 0.68)

move_track = get_move_track(ranges)  # 将结果交给滑动线性函数

# 滑动代码

element = wait.until(PE((By.CLASS_NAME, 'yidun_jigsaw')))  # 滑块

ActionChains(driver).click_and_hold(element).perform()  # 通过行为链,按住它,然后执行
for i in move_track:  # 循环每次滑动的距离
    # 执行移动
    ActionChains(driver).move_by_offset(i, 0).perform()
ActionChains(driver).release().perform()  # 松开按键,完成滑动

input()

五·总结

📌📌使用selenium破解验证码需要模拟用户操作,包括手动输入验证码和提交表单等。验证码的设计越来越复杂,破解难度也越来越大。因此,在使用selenium破解验证码时,需要根据具体情况选择合适的方法

六·后记

👉👉本专栏所有文章是博主学习笔记,仅供学习使用,爬虫只是一种技术,希望学习过的人能正确使用它。
博主也会定时一周三更爬虫相关技术更大家系统学习,如有问题,可以私信我,没有回,那我可能在上课或者睡觉,写作不易,感谢大家的支持!!🌹🌹🌹
文章来源地址https://www.toymoban.com/news/detail-415066.html

到了这里,关于15.网络爬虫—selenium验证码破解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java爬虫破解滑块验证码

    使用技术:java+Selenium 废话:         有爬虫,自然就有反爬虫,就像病毒和杀毒软件一样,有攻就有防,两者彼此推进发展。而目前最流行的反爬技术验证码,为了防止爬虫自动注册,批量生成垃圾账号,几乎所有网站的注册页面都会用到验证码技术。其实验证码的英文

    2023年04月09日
    浏览(46)
  • Selenium破解滑动验证码的原理及解决思路

    🍅 视频学习: 文末有免费的配套视频可观看 🍅  点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快  1、获取页面元素信息: 使用Selenium打开目标网页,并通过相关方法获取滑块、背景图等元素的位置和属性信息。可以使用Selenium提供的定位方法(如xpa

    2024年02月20日
    浏览(51)
  • Python如何用爬虫破解滑动验证码?这五步简单易用

    在使用python爬虫抓取数据的时候经常会遇到网站为了防止机器人登录而设置了验证,除了最基本的字符验证之外还有滑块验证、图片验证、顺序验证等等验证方式。那我们今天就来讲一下python如何用爬虫破解滑动验证码,一起来看看吧。 1.读取图片:在命令行控制台输入pip

    2024年02月14日
    浏览(57)
  • 使用Selenium破解滑动验证码的原理及解决思路

    1、获取页面元素信息: 使用Selenium打开目标网页,并通过相关方法获取滑块、背景图等元素的位置和属性信息。可以使用Selenium提供的定位方法(如xpath、CSS选择器等)来找到这些元素。 可以使用find_element_by_xpath或find_element_by_css_selector等方法来获取滑块和背景图元素的位置和

    2024年02月09日
    浏览(54)
  • Cloudflare5s盾破解|爬虫自动验证|解决方案

    一、什么是Cloudflare5s盾 Cloudflare是一个网站加速和安全服务提供商。Cloudflare  5s盾是指网站防御模式,它可以防止恶意流量和攻击,如DDoS、SQL注入、XSS等,保护网站免受恶意攻击和流量泛滥带来的服务中断或数据泄漏等问题。此外,Cloudflare  5s盾还可以通过Web应用程序防火

    2024年02月12日
    浏览(47)
  • selenium破解滑块验证码自动查询+获取后续表单数据

    一、装载好chromedriver之后,运行命令行 \\\"chrome.exe\\\"(路径) --remote-debugging-port=9222 打开谷歌浏览器。 二、使用selenium打开网页:  三、获取输入框批量输入数据,并破解验证码: 使用 driver.find_element_by_xpath 获取element时,xpath可通过浏览器打开网站,使用检查功能,找到element所

    2024年02月12日
    浏览(56)
  • python selenium模块联合带带弟弟破解滑块验证码

    Python 使用 Selenium 模块模拟用户操作,滑动滑块来破解验证码

    2024年04月14日
    浏览(106)
  • Selenium滑动验证码破解(缺口对应却无法通过,需要做鼠标轨迹模拟)

    平台: 所涉及内容: 滑动验证码破解原理: 解决场景: 正常情况下,滑动验证码都是在canvas画出来的(残图一般是JS通过对后台返回的完整图片剪裁而来),在网页代码中可以找到对应信息 残图直接画在Canvas上,因此需要通过js代码将其导出,获取图片的base64数据(错存在直

    2024年02月12日
    浏览(80)
  • 2022-爬虫-Selenium-百度安全验证

    新的一年刚开始,百度又有更新了。今天早上刚起床,开始了今天的学习之路。返现了一个有趣的事,和大家分享解决一下。 Chrome驱动打开百度时发现需要进行安全验证。而且看到验证的方式还特别新奇,如下图需要图片方正。 解决方法:可以通过隐藏WebDriver提示条和自动

    2023年04月08日
    浏览(36)
  • 爬虫日常-selenium登录12306,绕过验证

    hello兄弟们,这里是无聊的网友。愉快的周末过去了,欢迎回到学习频道。书接上文,我们说到了再用selenium登录12306时遇到了滑块验证的问题。当前的网站几乎每家都会在登录模块添加一个认证,来规避各种爬虫,而我们则不断的去想办法绕过这些验证模块。目前一些简单的

    2024年02月07日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包