python爬虫解决百度贴吧登陆验证码问题
作为贴吧重度用户,写了个贴吧爬虫脚本
抄了一些别人的代码。记得有个验证码解决的。可是忘了链接了,今天最终自己攻克了。
首先要让登陆须要验证码,不停地登陆就好了。。。度娘非常快会加上验证码大法的。。。
须要验证码的情况下,直接登陆返回的错误信息是error=257
打开贴吧首页选择登陆,弹出验证码,找到验证码的链接是
右键在新标签页中打开
注意到链接是
https://passport.baidu.com/cgi-bin/genimage?jxIcaptchaservice+一串字母数字
这个时候依据之前写的代码,判定登陆成功是依据post登录数据之后返回的一串链接,链接格式是这样:
https://passport.baidu.com/static/passpc-account/html/v3Jump.html?
hao123Param=ZzJhSGQzVkhjNGNGUlBNRVZMYlV0YVNYazVTa2xMUWtRdE1FTnJRblZuT1dkeVRXRlBOMlZYU2tsQlZuaFdRVUZCUVVGQkpDUUFBQUFBQUFBQUFBRUFBQUJYbTk4aXdhTFd2cmUwMDZiSzFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFaDBORlZJZERSVmRq&callback=parent.bd__pcbs__ra48vi&index=0&codestring=&username=%E7%AB%8B%E5%BF%97%E5%8F%8D%E5%BA%94%E8%AF%95&phonenumber=&mail=&tpl=pp&u=https%3A%2F%2Fpassport.baidu.com%2F&needToModifyPassword=0&gotourl=&auth=&error=0
最后面的error=0代表没有错误,登陆成功,当须要验证码时,返回的链接redirectURL大约是这种
除了error=257之外。还出现了
codestring=jxIcaptchaservice616462355546386b494679704d7678684f666d4d5645364a567a376c615563564e43795356514d774378374e63742f44596b367733625a7176766a41706a794f58435365586732506a73376a4f7877784f326442314469774e654575653558747a78657a756639336a2f77674c6f6e34415a396f445952356f326d454e6969325133656c5854754c727257442f796d7332676f4c61612f565946526148586758597a61502f697174715a686b2b5455332f56574f42522f5649415767504b6e3847737a367930587069577a5077796c696f38544957332b43564c444259514c6c7763766a626e7147674e726d39422b6b36777a2f46417a766a6345315768597a35426775774442674973553074444a694f4b766c6a4e5261664d65462b4b4b6e5a547159594d6a4c4c76747a7159596a307a3879306642455355752b3078317849694a664e546a36
这一串參数,似乎正好和验证码链接吻合,于是写了一段代码生成链接并获取图片:
vcodeMatch=re.search(r'codestring=jxIcaptchaservice\S+&username',redirectURL)
vcodeNum=vcodeMatch.group(0)[11:-9]
vcodeUrl='https://passport.baidu.com/cgi-bin/genimage?'+vcodeNum
vcodeRequest=urllib2.Request(vcodeUrl)
vcodeResponse=urllib2.urlopen(vcodeRequest)
with open('vcode.jpg','wb') as out:
out.write(vcodeResponse.read())
out.flush()
vcode=raw_input(u'input vcode:')
rawData['verifycode']=vcode
rawData是post的数据,加上验证码时候再次post过去。測试的时候发现并没有登陆成功,变成了不停输入验证码= =
再次到网页上找原因。找到post传递的參数中
除了verifycode之外还有个codestring。加到post參数里面就成功了
所以加上一句:
rawData['codestring']=vcodeNum
測试结果
python爬虫解决百度贴吧登陆验证码问题的更多相关文章
- python爬虫获取百度图片(没有精华,只为娱乐)
python3.7,爬虫技术,获取百度图片资源,msg为查询内容,cnt为查询的页数,大家快点来爬起来.注:现在只能爬取到百度的小图片,以后有大图片的方法,我会陆续发贴. #!/usr/bin/env ...
- 如何用Python爬虫实现百度图片自动下载?
Github:https://github.com/nnngu/LearningNotes 制作爬虫的步骤 制作一个爬虫一般分以下几个步骤: 分析需求 分析网页源代码,配合开发者工具 编写正则表达式或 ...
- Python爬虫_百度贴吧(title、url、image_url)
本爬虫以百度贴吧为例,爬取某个贴吧的[所有发言]以及对应发言详情中的[图片链接] 涉及: request 发送请求获取响应 html 取消注释 通过xpath提取数据 数据保存 思路: 由于各贴吧发言 ...
- 利用Python爬虫实现百度网盘自动化添加资源
事情的起因是这样的,由于我想找几部经典电影欣赏欣赏,于是便向某老司机寻求资源(我备注了需要正规视频,绝对不是他想的那种资源),然后他丢给了我一个视频资源网站,说是比较有名的视频资源网站.我信以为真,便 ...
- python爬虫学习(3)_模拟登陆
1.登陆超星慕课,chrome抓包,模拟header,提取表单隐藏元素构成params. 主要是验证码图片地址,在js中发现由js->new Date().getTime()时间戳动态生成url ...
- python爬虫解决gbk乱码问题
今天尝试了下爬虫,爬取一本小说,忘语的凡人修仙仙界篇,当然这样不好,大家要支持正版. 爬取过程中是老套路,先获取网页源代码 # -*- coding:UTF-8 -*- from bs4 import ...
- Python爬虫学习笔记之点触验证码的识别
代码: Chaojiying.py: #!/usr/bin/env python # coding:utf-8 import requests from hashlib import md5 clas ...
- Python爬虫之记录一次下载验证码的尝试
好久没有写过爬虫的文章了,今天在尝试着做验证码相关的研究时,遇到了验证码的收集问题. 一般,验证码的加载都有着比较复杂的算法和加密在里边,但是笔者今天碰到的验证码却比较幸运,有迹可循.在此,给 ...
- Python 爬虫四 基础案例-自动登陆github
GET&POST请求一般格式 爬取Github数据 GET&POST请求一般格式 很久之前在讲web框架的时候,曾经提到过一句话,在网络编程中“万物皆socket”.任何的网络通信归根 ...
随机推荐
- java 中接口的概念
接口接口在java中是一个抽象的类型,是抽象方法的集合,接口通常使用interface来声明,一个类通过继承接口的方式从而继承接口的抽象方法.接口并不是类,编写接口的方式和类的很相似,但是他们属于不同 ...
- set()集合的概念与一般操作
1.概念 set集合是python的一种基本数据类型,其特点为: 1.元素不重复(可以利用这条性质除去重复元素) 2.在集合中无序 3.元素可hash(int,str,bool,tuple) set集 ...
- POJ1915 BFS&双向BFS
俩月前写的普通BFS #include <cstdio> #include <iostream> #include <cstring> #include <q ...
- 树莓派-USB存储设备自动挂载
简单介绍实现命令行下USB存储设备自动挂载的方法,Linux gnome/kde窗口环境下有移动存储的管理程序,可以实现自动挂载移动存储设备,但是在命令行下 通常需要用mount命令手动挂载USB存储 ...
- Spring Boot (21) 使用Swagger2构建restful API
使用swagger可以与spring mvc程序配合组织出强大的restful api文档.它既可以减少我们创建文档的工作量,同时说明内容又整合入现实代码中,让维护文档和修改代码整合为一体,可以让我们 ...
- 《CSS Mastery》读书笔记(4)
第七章 布局 CSS得到一个不好的名声,比较难懂, 一方面由于浏览器的不兼容,另一方面由于网上大量的技巧,每个CSS作者都可以有自己的方法去创建多列布局, 新的CSS开发者只是使用一种方法而不去理 ...
- 富文本wangEditor的批量激活
最近项目中使用了wangEditor这个轻量级的富文本框,由于需求是一个页面中会有多个富文本框同时激活,所以写了个批量激活的jquery方法,分享一下 // 激活富文本框 var wangEditor ...
- (转)vuex2.0 基本使用(3) --- getter
有的组件中获取到 store 中的state, 需要对进行加工才能使用,computed 属性中就需要写操作函数,如果有多个组件中都需要进行这个操作,那么在各个组件中都写相同的函数,那就非常麻烦,这 ...
- C# 查找、结束进程 - 通过进程名精确、模糊查找、结束进程
/// <summary> /// 根据“精确进程名”结束进程 /// </summary> /// <param name="strProcName" ...
- dubbo之只订阅及只注册
只订阅 问题 如果有两个镜像环境,两个注册中心,有一个服务只在其中一个注册中心有部署,另一个注册中心还没来得及部署,而两个注册中心的其它应用都需要依赖此服务,所以需要将服务同时注册到两个注册中心,但却 ...