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使用range函数计算一组数和的方法
May 07 Python
python类和继承用法实例
Jul 07 Python
Python实现的弹球小游戏示例
Aug 01 Python
Python实现自动上京东抢手机
Feb 06 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
Jun 14 Python
python3 实现一行输入,空格隔开的示例
Nov 14 Python
Mac下Anaconda的安装和使用教程
Nov 29 Python
Django 实现图片上传和显示过程详解
Jul 18 Python
简单了解django缓存方式及配置
Jul 19 Python
浅析pandas 数据结构中的DataFrame
Oct 12 Python
python使用ctypes调用扩展模块的实例方法
Jan 28 Python
keras中的卷积层&amp;池化层的用法
May 22 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
《星际争霸II》全新指挥官斯台特曼现已上线
2020/03/08 星际争霸
发现的以前不知道的函数
2006/09/19 Javascript
完美解决JS中汉字显示乱码问题(已解决)
2006/12/27 Javascript
JavaScript 对象模型 执行模型
2010/10/15 Javascript
JavaScript对象之间的转换 jQuery对象和原声DOM
2011/03/07 Javascript
javascript学习笔记(二十) 获得和设置元素的特性(属性)
2012/06/20 Javascript
js字符串转换成xml对象并使用技巧解读
2013/04/18 Javascript
JavaScript实现网页截图功能
2014/10/16 Javascript
JavaScript表格常用操作方法汇总
2015/04/15 Javascript
Bootstrap每天必学之标签与徽章
2015/11/27 Javascript
js实现仿qq消息的弹出窗效果
2016/01/06 Javascript
Angular X中使用ngrx的方法详解(附源码)
2017/07/10 Javascript
ES6学习教程之对象字面量详解
2017/10/09 Javascript
Vue按需加载的具体实现
2017/12/02 Javascript
JavaScript时间戳与时间日期间相互转换
2017/12/11 Javascript
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
JS获取子节点、父节点和兄弟节点的方法实例总结
2018/07/06 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
vue-router两种模式区别及使用注意事项详解
2019/08/01 Javascript
jQuery实现鼠标拖拽登录框移动效果
2020/09/13 jQuery
python使用内存zipfile对象在内存中打包文件示例
2014/04/30 Python
python分治法求二维数组局部峰值方法
2018/04/03 Python
Python批量发送post请求的实现代码
2018/05/05 Python
python变量命名的7条建议
2019/07/04 Python
python 实现查询Neo4j多节点的多层关系
2019/12/23 Python
python中封包建立过程实例
2021/02/18 Python
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
企业给企业的表扬信
2014/01/13 职场文书
房地产项目建议书
2014/03/12 职场文书
党员先进事迹材料
2014/12/19 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
党支部考察意见范文
2015/06/02 职场文书
Anaconda安装pytorch及配置PyCharm 2021环境
2021/06/04 Python
Mysql 设置boolean类型的操作
2021/06/04 MySQL
一文弄懂MySQL中redo log与binlog的区别
2022/02/15 MySQL