Python爬虫实现验证码登录代码实例


Posted in Python onMay 10, 2019

很多网站为了避免被恶意访问,需要设置验证码登录,避免非人类的访问,Python爬虫实现验证码登录的原理则是先到登录页面将生成的验证码保存下来,然后人为输入后,包装后再POST给服务器,实现验证,这里还涉及到了Cookie,其实Cookie保存在本地主机上,避免用户重复输入用户名和密码,在连接服务器的时候将访问连接和Cookie组装起来POST给服务器。

这里涉及到了两次向服务器POST,一次是Cookie,这里还自行设计想要Cookie的内容,由于是要登录,Cookie中存放的则是用户名和密码。第二次POST则是向服务器提交验证。

这里用到Python3,主要用到的包是re  urllib.request   http.cookiejar

上代码,借鉴了别人的代码~~~

import re
import urllib.request
import http.cookiejar
#from http.comkie import CookieJar 上面那句和这句等同
 
loginurl='https://www.douban.com/accounts/login'
cookie = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor)#在已存的Cookie下建立连接
 
params={}
params['form_email']='用户名'
params['form_password']='密码'#这里写上已有的用户名和密码
params['source']='http://www.douban.com/accounts/login'
 
#从首页提交登陆
response = opener.open(loginurl,urllib.parse.urlencode(params).encode('utf-8'))#urllib.parse.urlencode(params).encode('utf-8')这个是向服务
#器POST的内容,可以打印一下response.geturl()请求的连接看一下
#print(response.geturl()[0:33])
#验证成功跳转至登陆页
if response.geturl()[0:33]=='https://accounts.douban.com/login':
    html = response.read().decode('utf-8')
    #print(html),可以先打印一下文件内容,为了看到网页元素更方便的写正则,可以复制下来,在需要获取的地方用(.+?)表示,然后用group()元组来取得,
    #验证图片地址
    imgurl=re.search('<img id="captcha_image" src="(.+?)" alt="captcha" class="captcha_image"/>',html)
    if imgurl:
       url=imgurl.group(1)
       #print(url)
       #将验证码以v.jpg保存在本地,在输入验证码的时候可以手工输入
       res=urllib.request.urlretrieve(url,'v.jpg')
       captcha = re.search('<input type="hidden" name="captcha-id" value="(.+?)"/>',html)
       #print(captcha.group(1))
       if captcha:
           vcode=input('请输入图片上的验证码:')
           params["captcha-solution"] = vcode
           params["captcha-id"] = captcha.group(1)#这个是动态生成的,需要从网页中获得
           params["user_login"] = "登录"
           #提交验证码验证
           response = opener.open(loginurl,urllib.parse.urlencode(params).encode('utf-8'))
           if response.geturl()=="https://www.douban.com/":
              print("login sucess")

以上所述是小编给大家介绍的Python爬虫实现验证码登录详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python内置的字符串处理函数详细整理(覆盖日常所用)
Aug 19 Python
Python实现的一个自动售饮料程序代码分享
Aug 25 Python
Python中的迭代器漫谈
Feb 03 Python
Python实现爬虫爬取NBA数据功能示例
May 28 Python
python实现海螺图片的方法示例
May 12 Python
django的分页器Paginator 从django中导入类
Jul 25 Python
python使用 request 发送表单数据操作示例
Sep 25 Python
python中return的返回和执行实例
Dec 24 Python
构建高效的python requests长连接池详解
May 02 Python
Jupyter notebook快速入门教程(推荐)
May 18 Python
Python参数传递及收集机制原理解析
Jun 05 Python
Python3爬虫中Splash的知识总结
Jul 10 Python
详解如何管理多个Python版本和虚拟环境
May 10 #Python
不到40行代码用Python实现一个简单的推荐系统
May 10 #Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
May 10 #Python
Python3列表内置方法大全及示例代码小结
May 10 #Python
详解python 爬取12306验证码
May 10 #Python
详解用python写一个抽奖程序
May 10 #Python
python实现小球弹跳效果
May 10 #Python
You might like
PHPMailer 中文使用说明小结
2010/01/22 PHP
php自定义错误处理用法实例
2015/03/20 PHP
PHP实现QQ空间自动回复说说的方法
2015/12/02 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
为数据添加append,remove功能
2006/10/03 Javascript
使用按钮控制以何种方式打开新窗口的属性介绍
2012/12/17 Javascript
jQuery+jRange实现滑动选取数值范围特效
2015/03/14 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
javascript弹性运动效果简单实现方法
2016/01/08 Javascript
详解js私有作用域中创建特权方法
2016/01/25 Javascript
Backbone.js框架中Model与Collection的使用实例
2016/05/07 Javascript
JavaScript必知必会(三) String .的方法来自何方
2016/06/08 Javascript
node.js 中间件express-session使用详解
2017/05/20 Javascript
angularjs中ng-bind-html的用法总结
2017/05/23 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
vue组件表单数据回显验证及提交的实例代码
2018/08/30 Javascript
Vue监听页面刷新和关闭功能
2019/06/20 Javascript
浅谈layui 绑定form submit提交表单的注意事项
2019/10/25 Javascript
vue中destroyed方法的使用说明
2020/07/21 Javascript
[00:32]2018DOTA2亚洲邀请赛VG出场
2018/04/03 DOTA
Python连接MySQL并使用fetchall()方法过滤特殊字符
2016/03/13 Python
Windows下Python使用Pandas模块操作Excel文件的教程
2016/05/31 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
2018/05/16 Python
python3实现windows下同名进程监控
2018/06/21 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
2020/02/23 Python
django在开发中取消外键约束的实现
2020/05/20 Python
python属于哪种语言
2020/08/16 Python
简单介绍HTML5中audio标签的使用
2015/09/24 HTML / CSS
村党组织公开承诺书
2015/04/30 职场文书
天河观后感
2015/06/11 职场文书
2015年挂职锻炼个人总结
2015/10/22 职场文书
NodeJs使用webpack打包项目的方法详解
2022/02/28 NodeJs