Python爬虫-尝试使用人工和OCR处理验证码模拟登入
来源:互联网 发布:js正则数字验证小数点 编辑:程序博客网 时间:2024/05/22 03:42
此次是我第一次模拟登入,目标站点是知乎。
刚开始在网上看别人一直在说知乎登入首页有有倒立的汉字验证码,我打开自己的知乎登入页面,发现只有账号和密码,他们说的倒立的验证码去哪了,后面仔细一想我之前登入过知乎,应该在本地存在cookies,然后我将cookies删除掉果然就有需要验证码了:
参考了大多数的意见,可以模拟登入移动端,验证码形式是我们常见的字母数字组合,避开这个点击倒立的验证码形式,然后我就在移动端抓包了,可以拿到验证码图片的包,我们可以请求这个URL拿到每次的验证码:
这个URL的结构是:https://www.zhihu.com/captcha.gif?r=xxx&type=login
搜索”
def get_xsrf(): url='https://www.zhihu.com/signin?next=/' html=session.get(url=url,headers=headers).text pattern=re.compile('.*?<input type="hidden" name="_xsrf" value="(.*?)"/>', re.S) _xsrf=re.search(pattern,html).group(1) if _xsrf: print('_xsrf获取成功:'+ _xsrf) return _xsrf else: print('_xsrf获取失败')
对于captcha,就是验证码了,在刚开始的时候也提到了,可以请求相应的URL,拿到每次所需的验证码,人工来识别验证码的好处就是准确率高,这里我尝试使用了,人工识别的方法:
验证码图片会下载至项目所在的文件夹,打开图片,输入验证码即可
def get_captcha(): t=int(time.time()*1000) url='https://www.zhihu.com/captcha.gif?r='+str(t)+'&type=login' content=session.get(url=url,headers=headers).content with open('captcha.jpg','wb') as f: f.write(content) im=Image.open('captcha.jpg') im.show() time.sleep(5) im.close() return input('请输入验证码:')
后面我又尝试使用OCR(Optical Character Recogintion,光学字符识别),所用到的包是pytesseract,看能不能够自动识别,但是显然效果是很差的,在此也记录一下:
def get_captcha(): t=int(time.time()*1000) url='https://www.zhihu.com/captcha.gif?r='+str(t)+'&type=login' content=session.get(url=url,headers=headers).content with open('captcha.jpg','wb') as f: f.write(content) im=Image.open('captcha.jpg') #把彩色图像转化成灰度图像 gray=im.convert('L') gray.show() threshold=200 #二值化处理 table=[] for i in range(256): if i < threshold: table.append(0) else: table.append(1) out=gray.point(table,'1') out.show() out.save('captcha_thresholded.jpg') th=Image.open('captcha_thresholded.jpg') #使用Tesseract进行图片识别 print(pytesseract.image_to_string(th)) return pytesseract.image_to_string(th)
试了几次,OCR识别的结果都是有问题的,结果是这样的:
阅读全文
0 0
- Python爬虫-尝试使用人工和OCR处理验证码模拟登入
- 登入验证码处理
- python爬虫-->验证码处理
- curl模拟登入
- Httpclient模拟登入
- curl实现避开验证码模拟登入 抓取网站网页内容 https
- CAS登入添加手机验证码
- servlet登入验证
- 【Python模拟登录】py2模拟登陆CSDN(人工识别验证码)
- python爬虫scrapy框架——人工识别知乎登录知乎倒立文字验证码和数字英文验证码
- python爬虫scrapy框架——人工识别登录知乎倒立文字验证码和数字英文验证码(2)
- 【Python爬虫7】验证码处理
- 使用python模拟登登录网站
- 模拟登入教务处(header)
- Oracle EBS 模拟登入
- C# AD登入验证
- servlet+mysql登入验证
- python使用tesseract-ocr完成验证码识别
- APUE第十四章.第十五章学习笔记
- Promise与函数嵌套的对比
- Orm,android中数据库封装(二)
- “咱们吃鸡吧”的背后
- ES6 变量声明与赋值:值传递、浅拷贝与深拷贝详解
- Python爬虫-尝试使用人工和OCR处理验证码模拟登入
- 专题
- 设计模式(策略模式)
- JavaScript Event Loop 机制详解与 Vue.js 中实践应用
- Eclipse的Servers视图中无法添加Tomcat7
- 使用CSS设计网站页面
- T-SQL中GO关键字
- Rhyme/ Linux /etc/fstab文件修复
- Linux基本常用命令