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 相关文章推荐
python2.7实现爬虫网页数据
May 25 Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
Jul 18 Python
解决Pycharm界面的子窗口不见了的问题
Jan 17 Python
anaconda如何查看并管理python环境
Jul 05 Python
Python3批量移动指定文件到指定文件夹方法示例
Sep 02 Python
Python单元测试与测试用例简析
Nov 09 Python
Python3实现飞机大战游戏
Apr 24 Python
Python实现转换图片背景颜色代码
Apr 30 Python
Python‘==‘ 及 ‘is‘相关原理解析
Sep 05 Python
Python实现王者荣耀自动刷金币的完整步骤
Jan 22 Python
用OpenCV进行年龄和性别检测的实现示例
Jan 29 Python
浅谈Python协程asyncio
Jun 20 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
PHP取进制余数函数代码
2012/01/19 PHP
php简单防盗链实现方法
2015/07/29 PHP
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
2016/03/05 PHP
PHP中读取文件的几个方法总结(推荐)
2016/06/03 PHP
jquery last-child 列表最后一项的样式
2010/01/22 Javascript
jquery 笔记 事件
2011/11/02 Javascript
点击进行复制的JS代码实例
2013/08/23 Javascript
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
2015/11/30 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
2016/01/18 Javascript
基于Bootstrap实现tab标签切换效果
2020/04/15 Javascript
jQuery实现table表格checkbox全选的方法分析
2018/07/04 jQuery
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
JS如何把字符串转换成json
2020/02/21 Javascript
[01:01:25]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第三局
2016/02/27 DOTA
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
Python闭包实现计数器的方法
2015/05/05 Python
python解决方案:WindowsError: [Error 2]
2016/08/28 Python
python 使用值来排序一个字典的方法
2018/11/16 Python
python区块及区块链的开发详解
2019/07/03 Python
Python进程Multiprocessing模块原理解析
2020/02/28 Python
Flask模板引擎Jinja2使用实例
2020/04/23 Python
美国婚礼装饰和活动用品批发供应商:Event Decor Direct
2018/10/12 全球购物
寄语学生的话
2014/04/10 职场文书
办公室主任岗位承诺书
2014/05/29 职场文书
2014年保育员个人工作总结
2014/12/02 职场文书
2015年师德师风自我评价范文
2015/03/05 职场文书
详解Oracle块修改跟踪功能
2021/11/07 Oracle
电脑无法安装Windows 11怎么办?无法安装Win11的解决方法
2021/11/21 数码科技
在CSS中使用when/else的方法
2022/01/18 HTML / CSS