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”.任何的网络通信归根 ...
随机推荐
- JPA新增entity时自动填充时间,例创建时间,修改时间
背景:springboot项目,集成JPA,与数据库交互的entity,与用户交互的DTO 问题:添加酒店时,两个字段create_time,update_time,前端不传数据,如果赋值 解决: 1 ...
- Java学习笔记之从C++转Java
之前一直是做C++后台开发的,习惯了命令行和g++,由于工作原因现在开始转java. 1.参考书籍:java编程思想(think in java),java核心技术(core java); 2.怎么在 ...
- A - Diverse Team
Problem description There are n students in a school class, the rating of the i-th student on Codeho ...
- Vue2-Editor 使用
Vue-Editor底层采取的是quill.js,而quill.js采用的是html5的新属性classList,所以版本低于ie10会报错“无法获取未定义或 null 引用的属性‘confirm’” ...
- 3.0 Windows和Linux双系统安装(3)
3.0 Windows和Linux双系统安装(3) 3.1 精简的安装步骤如下:(如果已经有了前面两篇教程的安装经验,推荐看完3.1即可动手了) 双系统很多开发新人会用到,而且比起虚拟机好处是运行效率 ...
- css下拉菜单写法
网页导航栏的下拉效果,通过div框的显示和隐藏实现. <html> <head> <meta charset="UTF-8"> <titl ...
- Eclipse Rap开发 异步刷新UI处理
1.Display.getCurrent()获取的是当前线程的display对象,如果当前在非UI线程中那么获取到的display对象为空: 一般Display.getCurrent() 用 ...
- 复习java基础第二天(异常处理)
一.常见的异常类型: public class TestException { public static void main(String[] args) { int i = 10; //数学异常: ...
- Linux命令小记
以下说法都是基于普通用户的角度,如果是root,可能会有不同. (1)rm -r或-R选项:递归删除目录及其内容(子目录.文件) rm默认无法删除目录,如果删除空目录,可以使用-d选项.如果目录非空, ...
- [Advanced Algorithm] - Symmetric Difference
题目 创建一个函数,接受两个或多个数组,返回所给数组的 对等差分(symmetric difference) (△ or ⊕)数组. 给出两个集合 (如集合 A = {1, 2, 3}和集合 B = ...