【Python】爬虫通过验证码

embedded/2024/11/14 4:34:11/

1、将验证码下载至本地

python"># 获取验证码界面html
url = 'http://www.example.com/a.html'
resp = requests.get(url)
soup = BeautifulSoup(resp.content.decode('UTF-8'), 'html.parser')#找到验证码图片标签,获取其地址
src = soup.select_one('div.captcha-row img')['src']# 验证码下载至本地
resp = requests.get(src)
with open('../images/verify.png', 'wb') as f:f.write(resp.content)

2、解析验证码

pip install ddddocr
python">ocr = ddddocr.DdddOcr()
with open('../images/verify.png', 'rb') as f:img = f.read()code = ocr.classification(img)print(code)

3、发送验证码

python">	#获取 token,一般验证码框有个隐藏的tokentoken = soup.find('input', {'name': 'csrfToken'}).get('value')# 提交按钮对应的URLverify_url = 'https://www.example.com/verify'# 表单数据具体有哪几项可以在界面提交时查看(F12)data = {'vcode': code,'token': token,'btnPost':''}# 请求头(F12 从请求里扒)headers = {'content-type': 'application/x-www-form-urlencoded','user-agent': 'Mozilla/5.0 (Macintosh;) AppleWebKit/537.36 (KHTML, like Gecko) Chrome'}response = requests.post(verify_url, data=data, headers=headers)if response.status_code == 200:print('人机验证 - success')else:print('人机验证 - fail')

http://www.ppmy.cn/embedded/136936.html

相关文章

Qt:QPdfDocument渲染PDF文件时的信息丢失问题

背景 Qt自带了QPdfDocument可以用来打开并渲染PDF文件,同时Qt也提供了qtpdf multipage example,可以浏览多页PDF文件,如下图: 问题 但在使用过程中发现,对于某些PDF文件,QPdfDocument在渲染时会丢失部分信…

Golang | Leetcode Golang题解之第542题01矩阵

题目: 题解: type point struct{x, y int }var dirs []point{{-1, 0}, {1, 0}, {0, -1}, {0, 1}}func updateMatrix(mat [][]int) [][]int {var m, n len(mat), len(mat[0])var res make([][]int, m)var visited make([][]bool, m)var queue []poin…

Vivado+Vscode联合打造verilog环境

一、Vivado下载安装 详细参考我另一篇文章: Vivado2022.2下载安装_fpga vivado下载-CSDN博客https://blog.csdn.net/weixin_61081689/article/details/143460790?spm1001.2014.3001.5501 二、Vscode下载安装 详细参考我另一篇文章: VscodeAnacond…

Spring Boot基础教学:Spring Boot 简介

第一部分:Spring Boot 简介 1.1 什么是Spring Boot? Spring框架的简介Spring Boot与Spring框架的关系Spring Boot的优势 1.2 Spring Boot的核心特性 自动配置起步依赖内嵌服务器Spring Boot CLIActuator 1.3 Spring Boot的应用场景 微服务REST API…

(C++11)委托构造函数--C++

文章目录 委托构造函数为什么要有委托构造函数代码解释注意事项 委托构造函数 C11 引入了委托构造的概念,这使得构造函数可以在同一个类中一个构造函数调用另一个构造函 数,从而达到简化代码的目的。 就是委托其他构造函数帮忙构造。 为什么要有委托构…

nacos集群AP架构源码解析

1 心跳检测 核心类&#xff1a;ClientBeatCheckTask 核心方法&#xff1a;run public void run() {try {//1 集群状态下心跳处理if (!getDistroMapper().responsible(service.getName())) {return;}if (!getSwitchDomain().isHealthCheckEnabled()) {return;}List<Instance…

C++ 中的智能指针(Smart Pointer)

C 中的智能指针&#xff08;Smart Pointer&#xff09;是用于管理动态内存分配的工具&#xff0c;它们能够自动管理资源的生命周期&#xff0c;避免内存泄漏。智能指针是 C11 标准引入的&#xff0c;通过模板类封装原生指针&#xff0c;实现资源的自动释放。主要的智能指针包括…

97_api_intro_imagerecognition_pdf2word

通用 PDF OCR 到 Word API 数据接口 文件处理&#xff0c;OCR&#xff0c;PDF 高可用图像识别引擎&#xff0c;基于机器学习&#xff0c;超精准识别率。 1. 产品功能 通用识别接口&#xff1b;支持中英文等多语言字符混合识别&#xff1b;formdata 格式 PDF 文件流传参&#xf…