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

中国住房城乡建设部网站首页七台河做网站

中国住房城乡建设部网站首页,七台河做网站,做的好的农产品网站,一般网站建设用什么样的代码接上篇《42、使用requests的Cookie登录古诗文网站》 上一篇我们介绍了如何利用requests的Cookie登录古诗文网。本篇我们来学习如何使用验证码识别工具进行登录验证的自动识别。 一、图片验证码识别过程及手段 上一篇我们通过requests的session方法#xff0c;带着原网页登录…接上篇《42、使用requests的Cookie登录古诗文网站》 上一篇我们介绍了如何利用requests的Cookie登录古诗文网。本篇我们来学习如何使用验证码识别工具进行登录验证的自动识别。 一、图片验证码识别过程及手段 上一篇我们通过requests的session方法带着原网页登录后的Cookie进入个人中心访问到了登录后的界面数据。但是我们在登录的过程中对于验证码的识别是先下载相关图片然后人工输入进行校验的有没有能够通过程序自动识别验证码的手段呢答案是肯定有。 1、验证码识别过程 图片验证码是目前最常用的一种想要对验证码进行精准识别至少要经过三个过程分别为图片清理、字符切分、字符识别。 1图片清理 图片清理是为接下来的机器学习或模板匹配阶段做准备的指通过灰度化、二值化、干扰点清理等过程得到比较干净的图片数据如以下样例 紧接着需要进行“彩色去噪”和“灰度化”、“二值化”、“底色统一”以及“干扰点清理”这里我用PPT简单总结了一下这几个步骤 2字符切分 该阶段对前期预处理后的图片进行切割处理定位和分离出整幅图片中的每个孤立的字符主体部分。主要采用X轴和Y轴投影的方法即统计对应坐标上黑色像素点的个数。例如下面的字符图片 会被切分为“b”、“w”、“t”和“p”四个字符图片。 3字符识别 通过处理、切分后的图片已经可以清晰的辨别要识别的字符此时我们需要使用OCR识别等手段进行字符的识别。具体详见第2节的介绍。 2、验证码识别手段 常见的图片验证码有以下几种识别手段 1OCR识别 开源的OCR识别引擎Tesseract基于C语言在Python中被封装为Pytesseract初期由HP实验室研发后来贡献给了开源软件业。 该手段的的优点是开发量少比较通用适合于各种变形较少的验证码对于扭曲不严重的字母和数字识别率高。 缺点是对于扭曲的字母和数字识别率大大降低对于字符间有粘连的验证码几乎难以正确识别很难针对特定网站的验证码做定制开发。 2模板库匹配 需要建立字符模板库进行字符匹配。该方法需要针对目标网站收集大量的验证码然后根据上一章节的方法进行图片清理最后按照固定的长宽值切分出字符模板图保存文件名带上对应字符的标记例如 然后把目标验证码图片按字符个数切分使用汉明距离或编辑距离定义相似度并用KNN方法得到K个最相似的字符最后从K个字符中选取出现次数最多的那个作为匹配结果。 这种方法主要针对某个特定网站不具备普适性。 3神经网络 以上验证码识别都依赖于字符切分切分的好坏几乎直接决定识别的准确程度。而对于有字符粘连的图片往往识别率就会低很多。目前验证码识别最先进的是谷歌在识别“街景”图像中门牌号码中使用的一套的算法。该算法将定位、分割和识别等几个步骤统一起来采用一种“深度卷积神经网络”deep convolutional neural network方法进行识别准确率可以达到99%以上。 谷歌拿自有的reCAPTCHA验证码做了测试结果发现对于难度最大的reCAPTCHA验证码新算法的准确率都达到99.8%这可能也好于大多数人为验证。 二、第三方验证码识别工具 目前市面上已经有很多商用的验证码识别软件和工具为了提高我们的编程效率我们没有必要亲自去实现验证码的整个识别过程直接调用相关的程序包即可。 本篇我们介绍的验证码识别工具为“超级鹰”的验证码识别平台官网http://www.chaojiying.com/ 首先我们点击首页右上角的登录按钮进入登录页面然后点击注册账号进行账号的开通 注册完毕后登录账号进入个人中心点击“开发文档” 然后点击“Python语言Demo下载” 下载完毕解压后可以看到验证码识别的Python样例代码 代码如下 #!/usr/bin/env python # coding:utf-8import requests from hashlib import md5class Chaojiying_Client(object):def __init__(self, username, password, soft_id):self.username usernamepassword  password.encode(utf8)self.password md5(password).hexdigest()self.soft_id soft_idself.base_params {user: self.username,pass2: self.password,softid: self.soft_id,}self.headers {Connection: Keep-Alive,User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0),}def PostPic(self, im, codetype):im: 图片字节codetype: 题目类型 参考 http://www.chaojiying.com/price.htmlparams {codetype: codetype,}params.update(self.base_params)files {userfile: (ccc.jpg, im)}r requests.post(http://upload.chaojiying.net/Upload/Processing.php, dataparams, filesfiles, headersself.headers)return r.json()def PostPic_base64(self, base64_str, codetype):im: 图片字节codetype: 题目类型 参考 http://www.chaojiying.com/price.htmlparams {codetype: codetype,file_base64:base64_str}params.update(self.base_params)r requests.post(http://upload.chaojiying.net/Upload/Processing.php, dataparams, headersself.headers)return r.json()def ReportError(self, im_id):im_id:报错题目的图片IDparams {id: im_id,}params.update(self.base_params)r requests.post(http://upload.chaojiying.net/Upload/ReportError.php, dataparams, headersself.headers)return r.json()if __name__ __main__:#用户中心软件ID 生成一个替换 96001chaojiying Chaojiying_Client(超级鹰用户名, 超级鹰用户名的密码, 96001)#本地图片文件路径 来替换 a.jpg 有时WIN系统须要//im open(a.jpg, rb).read()#1902 验证码类型  官方网站价格体系 3.4版 print 后要加() print chaojiying.PostPic(im, 1902)#print chaojiying.PostPic(base64_str, 1902)  #此处为传入 base64代码 这里我们按照这段代码进行图片识别即可。里面需要我们输入超级鹰的账号和密码以及一个软件ID。软件ID的获取方式如下 首先我们回到超级鹰的用户中心拉倒最下面点击左下角的“软件ID”菜单然后点击生成一个软件ID 然后输入一个软件名即可其他不用动直接点提交 然后我们就可以看到生成的软件ID 我们在代码的第三个参数里填写这个ID即可。 然后还要注意一点如果我们使用的是Python的3.4版 print 后要加()不然运行会报错 我们把代码和图片a.jpg放入我们的Python工作空间填写好上面的所有参数执行一下代码如果咱们第一次用会发现报错了显示“无可用题分” 这里是因为需要进行充值我们去用户中心的下面“购买题分”充几块钱就行了 这里是他们官网的收费方式大家自行决定我充值了5块钱有5000题分基本上可以识别上百次4字验证码了 我们充值了几块钱后再去执行代码得到结果 可以看到识别出的a.jpg的内容这里我拿到的a.jpg确实是“7261” 这个返回对象中的pic_str字段就是识别结果可以在调用代码的时候加上“.get(pic_str)”直接获取结果 code_name chaojiying.PostPic(im, 1902).get(pic_str) 三、优化古诗文网登录代码 我们把上一章节的古诗文代码编写一个V2.0版本将其中的验证码手工输入的部分修改为使用超级鹰识别代码进行识别的方法 # _*_ coding : utf-8 _*_ # Time : 2023-11-19 15:59 # Author : 光仔December # File : requests_cookie登录古诗文网 # Project : Python基础import requests import chaojiying# 古诗文网登录页面的URL地址 url https://so.gushiwen.cn/user/login.aspx?fromhttp://so.gushiwen.cn/user/collect.aspxheaders {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 }# 获取网络源代码 response requests.get(urlurl, headersheaders) content response.text# 使用BeautifulSoup来解析网页源码获取__VIEWSTATE和__VIEWSTATEGENERATOR参数 from bs4 import BeautifulSoupsoup BeautifulSoup(content, lxml)# 获取__VIEWSTATE VIEWSTATE soup.select(#__VIEWSTATE)[0].attrs.get(value) print(VIEWSTATE: , VIEWSTATE)# 获取__VIEWSTATEGENERATOR VIEWSTATEGENERATOR soup.select(#__VIEWSTATEGENERATOR)[0].attrs.get(value) print(VIEWSTATEGENERATOR: , VIEWSTATEGENERATOR)# 获取验证码图片 code soup.select(#imgCode)[0].attrs.get(src) code_url https://so.gushiwen.cn code# import urllib.request # urllib.request.urlretrieve(urlcode_url,filenamecode.jpg) session requests.session() # 验证码url的内容 response_code session.get(code_url) # 图片下载要使用二进制数据 content_code response_code.content # wb模式就是将二进制数据写入文件 with open(code.jpg, wb) as fp:fp.write(content_code)# 获取验证码图片后使用超级鹰验证码识别工具进行验证码自动识别 chaojiying chaojiying.Chaojiying_Client(超级鹰用户名, 超级鹰用户名的密码, 超级鹰软件ID) im open(code.jpg, rb).read() code_name chaojiying.PostPic(im, 1902).get(pic_str)# 点击登录 url_post https://so.gushiwen.cn/user/login.aspx?fromhttp%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspxdata_post {__VIEWSTATE: VIEWSTATE,__VIEWSTATEGENERATOR: VIEWSTATEGENERATOR,from: http://so.gushiwen.cn/user/collect.aspx,email: 古诗文网账号,pwd: 古诗文网密码,code: code_name,denglu: 登录 }# 获取网络源代码这里能用requests对象要用验证码的session对象保持一个Cookie环境 response_post session.post(urlurl_post, headersheaders, datadata_post) content_post response_post.textprint(content_post) 效果 可以看到这次不需要我们进行人工干预直接就识别到了验证码进行自动登录获取到古诗文网登录后个人中心的信息。 参考尚硅谷Python爬虫教程小白零基础速通杨杰授权网易云社区《常用验证码的识别方法》转载请注明出处https://guangzai.blog.csdn.net/article/details/134762604
http://www.lebaoying.cn/news/40405.html

相关文章:

  • 网页设计特效网站wordpress导出word
  • 河南省建设厅网站师林峰wordpress如何加密
  • 怎样做网站教程ps网站制作教程
  • seo网站建设公司哪家好wordpress 整站带数据
  • 个人做旅游网站保险做的好的网站有哪些
  • 盐城企业建设网站网站设计美工排版编辑
  • 中国建设银行网站分期通wordpress如何页面静态
  • 重庆专业的网站建设广州网站制作有哪些
  • 沈阳公司网站制作网站开发会用到的框架
  • 网站图片搜索技术哪里可以做天津行业建站
  • 二级域名做非法网站网站建设实训心得
  • 网站建设冫首选金手指wordpress讨论组
  • 合肥寒假兼职工网站建设志诺企业管理咨询有限公司
  • 网站描述案例科技大学全国排名
  • 家具网站建设方案腾讯网站建设方案
  • 合肥做网站优化东莞最新一例阳性
  • nodejs做网站的弊端最成功的网络营销案例
  • 培训学校地址网站建设网站开发实训报告总结2021
  • 如何在网站做电子报重庆营销型网站建设多少钱
  • 网站 linux 服务器深圳建网站的网络公司
  • 谷歌做自己的网站广西翔路建设有限责任公司网站
  • 昆山门户网站网站图片自动下载
  • 企业vi怎么设计北京seo网站管理
  • 网站建设 用什么语言wordpress如何添加自定义字段
  • 制作网站赚钱吗创意网络
  • 网站伪静态好还是静态好wordpress 多媒体尺寸
  • 自己做的网站打不开了简易网址制作
  • 招聘网站费用怎么做分录深圳全网营销网站
  • 三合一网站有必要吗长沙人才市场招聘网最新招聘
  • a3网站建设网站显示已备案