Python爬虫-尝试使用人工和OCR处理验证码模拟登入
刚开始在网上看别人一直在说知乎登入首页有有倒立的汉字验证码,我打开自己的知乎登入页面,发现只有账号和密码,他们说的倒立的验证码去哪了,后面仔细一想我之前登入过知乎,应该在本地存在cookies,然后我将cookies删除掉果然就有需要验证码了:
分析-01.png
参考了大多数的意见,可以模拟登入移动端,验证码形式是我们常见的字母数字组合,避开这个点击倒立的验证码形式,然后我就在移动端抓包了,可以拿到验证码图片的包,我们可以请求这个URL拿到每次的验证码:
分析-02.png
这个URL的结构是:https://www.zhihu.com/captcha.gif?r=xxx&type=login
分析-03.png
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,')
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识别的结果都是有问题的,结果是这样的:
分析-07.png
Python爬虫-尝试使用人工和OCR处理验证码模拟登入的更多相关文章
- python爬虫_简单使用百度OCR解析验证码
百度技术文档 首先要注册百度云账号: 在首页,找到图像识别,创建应用,选择相应的功能,创建 安装接口模块: pip install baidu-aip 简单识别一: 简单图形验证码: 图片: from ...
- python爬虫实战(四)--------豆瓣网的模拟登录(模拟登录和验证码的处理----scrapy)
在利用scrapy框架爬各种网站时,一定会碰到某些网站是需要登录才能获取信息. 这两天也在学习怎么去模拟登录,通过自己码的代码和借鉴别人的项目,调试成功豆瓣的模拟登录,顺便处理了怎么自动化的处理验证码 ...
- Python爬虫学习笔记之微信宫格验证码的识别(存在问题)
本节我们将介绍新浪微博宫格验证码的识别.微博宫格验证码是一种新型交互式验证码,每个宫格之间会有一条 指示连线,指示了应该的滑动轨迹.我们要按照滑动轨迹依次从起始宫格滑动到终止宫格,才可以完成验证,如 ...
- python爬虫之selenium+打码平台识别验证码
1.常用的打码平台:超级鹰.打码兔等 2.打码平台在识别图形验证码和点触验证码上比较好用 (1)12306点触验证码 from selenium import webdriver from selen ...
- python爬虫学习,使用requests库来实现模拟登录4399小游戏网站。
1.首先分析请求,打开4399网站. 右键检查元素或者F12打开开发者工具.然后找到network选项, 这里最好勾选perserve log 选项,用来保存请求日志.这时我们来先用我们的账号密码登陆 ...
- Python3.7爬虫:实时api(百度ai)检测验证码模拟登录(Selenium)页面
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_134 今天有同学提出了一个需求,老板让自动登录这个页面:https://www.dianxiaomi.com/index.htm, ...
- Python爬虫合集:花6k学习爬虫,终于知道爬虫能干嘛了
爬虫Ⅰ:爬虫的基础知识 爬虫的基础知识使用实例.应用技巧.基本知识点总结和需要注意事项 爬虫初始: 爬虫: + Request + Scrapy 数据分析+机器学习 + numpy,pandas,ma ...
- 网络爬虫之requests模块的使用+Github自动登入认证
本篇博客将带领大家梳理爬虫中的requests模块,并结合Github的自动登入验证具体讲解requests模块的参数. 一.引入: 我们先来看如下的例子,初步体验下requests模块的使用: ...
- 爬虫破解知乎登入(不使用Selenium模块)
一.分析 知乎完成登入的步骤 首先获得cookies(如果不获得后面验证码无法获得) 获得验证码 提交登入相关内容 前两步简单稍微细心寻找规律即可 其中最难的是第三步应该他前端进行了js加密 这里没什 ...
随机推荐
- iOS视频播放Demo VideoPlayerDemo
VideoPlayerDemo https://github.com/CaliosD/VideoPlayerDemo 一个视频播放的例子,使用了pod.
- 如何编写 PL/SQL 程序
本文的操作选用的数据库是oracle 数据库,登陆的用户是自带的scott用户,默认密码:tiger,有不懂得可以相互讨论一下,谢谢. 首先需要了解PL/SQL块的结构,PL/SQL块由定义部门.执行 ...
- Supervisor安装、配置、开启启动
1.安装Python包管理工具(easy_install) wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py -O - ...
- 三种Tomcat集群方式的优缺点分析
三种Tomcat集群方式的优缺点分析 2009-09-01 10:00 kit_lo kit_lo的博客 字号:T | T 本文对三种Tomcat集群方式的优缺点进行了分析.三种集群方式分别是:使用D ...
- Oracle100w数据大表割接
[现网问题] 最近在给咪咕做视频后台管理,移动那边希望页面上,码流字段可以支持1位小数,如8.0.自己查看数据库,发现码流字段是Number整型,也就是要换类型,打算直接换成varchar2.因为自己 ...
- java -- 对Map按键排序、按值排序
java -- 对Map按键.按值排序 1.按键排序(sort by key) 直接上代码 ↓ public Map<String, Str ...
- Django 2.0 Release note阅读简记
最前面就是大家都知道的这个版本开始只支持py3.4+,而且下一个大版本就不支持3.4,再就是建议所有插件开始放弃1.11 1.最惊艳的变化,就是URL配置正则表达式的简化,旧的: url(r'^art ...
- C++的拷贝构造函数、operator=运算符重载,深拷贝和浅拷贝、explicit关键字
原文地址:https://blog.csdn.net/shine_journey/article/details/53081523 1.在C++编码过程中,类的创建十分频繁. 简单的功能,当然不用考虑 ...
- SOFA 源码分析— 自定义路由寻址
前言 SOFA-RPC 中对服务地址的选择也抽象为了一条处理链,由每一个 Router 进行处理.同 Filter 一样, SOFA-RPC 对 Router 提供了同样的扩展能力. 那么就看看 SO ...
- SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码)
SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码) 概述: 表由行和列组成,每个表都必须有个表名. SQL CREATE TABLE 语法 CREATE TABLE tabl ...



