当前位置: 首页 > article >正文

【Python】爬虫通过验证码

1、将验证码下载至本地

# 获取验证码界面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
ocr = ddddocr.DdddOcr()
with open('../images/verify.png', 'rb') as f:
    img = f.read()
    code = ocr.classification(img)
    print(code)

3、发送验证码

	#获取 token,一般验证码框有个隐藏的token
	token = soup.find('input', {'name': 'csrfToken'}).get('value')
	
	# 提交按钮对应的URL
	verify_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.kler.cn/a/389230.html

相关文章:

  • 【juc】AbstractQueuedSynchronized为什么采用双向链表
  • Docker入门系列——Docker-Compose
  • 人工智能的前沿研究方向与未来发展趋势
  • 国标GB28181视频平台EasyCVR私有化部署视频平台对接监控录像机NVR时,录像机“资源不足”是什么原因?
  • 如何线程安全的使用HashMap
  • [HNCTF 2022 Week1]ret2shellcode-好久不见12
  • Python自动化运维项目管理实践:从需求分析到项目交付
  • 基于Springboot+微信小程序的健康管理系统 (含源码数据库)
  • ​ Xilinx 的开发工具Vivado开发流程​
  • Android 如何实现不编译指定的apk,不加载系统应用
  • 【Hive sql 面试题】求出各类型专利top 10申请人,以及对应的专利申请数(难)
  • 猎板PCB2到10层数的科技进阶与应用解析
  • NodeJS中process.nextTick()详解
  • redis中常见的命令有哪些?
  • 【STL】priority_queue的使用和模拟实现
  • 无网络安装ionic和运行
  • 【专题】事务与并发控制
  • 计算机视觉基础:OpenCV库详解
  • 【后端速成Vue】computed计算属性
  • Ardusub中添加自定义控制器
  • 计算机网络-1.2分层结构
  • SQLite 与 Python:集成与使用
  • 七次课掌握 Photoshop:选区与抠图
  • ORACLE创建用户之后查询不到创建的用户
  • React 守卫路由
  • 测试用例设计方法之边界值分析法