作为贴吧重度用户,写了个贴吧爬虫脚本

抄了一些别人的代码。记得有个验证码解决的。可是忘了链接了,今天最终自己攻克了。

首先要让登陆须要验证码,不停地登陆就好了。。。度娘非常快会加上验证码大法的。。。

须要验证码的情况下,直接登陆返回的错误信息是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大约是这种

https://passport.baidu.com/static/passpc-account/html/v3Jump.html?callback=bd__cbs__34xoc9&index=0&codestring=jxIcaptchaservice616462355546386b494679704d7678684f666d4d5645364a567a376c615563564e43795356514d774378374e63742f44596b367733625a7176766a41706a794f58435365586732506a73376a4f7877784f326442314469774e654575653558747a78657a756639336a2f77674c6f6e34415a396f445952356f326d454e6969325133656c5854754c727257442f796d7332676f4c61612f565946526148586758597a61502f697174715a686b2b5455332f56574f42522f5649415767504b6e3847737a367930587069577a5077796c696f38544957332b43564c444259514c6c7763766a626e7147674e726d39422b6b36777a2f46417a766a6345315768597a35426775774442674973553074444a694f4b766c6a4e5261664d65462b4b4b6e5a547159594d6a4c4c76747a7159596a307a3879306642455355752b3078317849694a664e546a36&username=%E7%AD%89%E7%9D%80%E6%B5%B7%E7%BB%B5%E5%AE%9D%E5%AE%9D&phonenumber=&mail=&tpl=tb&u=https%3A%2F%2Fpassport.baidu.com%2F&needToModifyPassword=&gotourl=&auth=&error=257

除了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爬虫解决百度贴吧登陆验证码问题的更多相关文章

  1. python爬虫获取百度图片(没有精华,只为娱乐)

    python3.7,爬虫技术,获取百度图片资源,msg为查询内容,cnt为查询的页数,大家快点来爬起来.注:现在只能爬取到百度的小图片,以后有大图片的方法,我会陆续发贴. #!/usr/bin/env ...

  2. 如何用Python爬虫实现百度图片自动下载?

    Github:https://github.com/nnngu/LearningNotes 制作爬虫的步骤 制作一个爬虫一般分以下几个步骤: 分析需求 分析网页源代码,配合开发者工具 编写正则表达式或 ...

  3. Python爬虫_百度贴吧(title、url、image_url)

    本爬虫以百度贴吧为例,爬取某个贴吧的[所有发言]以及对应发言详情中的[图片链接] 涉及: request 发送请求获取响应 html 取消注释 通过xpath提取数据 数据保存 思路: 由于各贴吧发言 ...

  4. 利用Python爬虫实现百度网盘自动化添加资源

    事情的起因是这样的,由于我想找几部经典电影欣赏欣赏,于是便向某老司机寻求资源(我备注了需要正规视频,绝对不是他想的那种资源),然后他丢给了我一个视频资源网站,说是比较有名的视频资源网站.我信以为真,便 ...

  5. python爬虫学习(3)_模拟登陆

    1.登陆超星慕课,chrome抓包,模拟header,提取表单隐藏元素构成params. 主要是验证码图片地址,在js中发现由js->new Date().getTime()时间戳动态生成url ...

  6. python爬虫解决gbk乱码问题

    今天尝试了下爬虫,爬取一本小说,忘语的凡人修仙仙界篇,当然这样不好,大家要支持正版. 爬取过程中是老套路,先获取网页源代码 # -*- coding:UTF-8 -*- from bs4 import ...

  7. Python爬虫学习笔记之点触验证码的识别

    代码: Chaojiying.py: #!/usr/bin/env python # coding:utf-8 import requests from hashlib import md5 clas ...

  8. Python爬虫之记录一次下载验证码的尝试

      好久没有写过爬虫的文章了,今天在尝试着做验证码相关的研究时,遇到了验证码的收集问题.   一般,验证码的加载都有着比较复杂的算法和加密在里边,但是笔者今天碰到的验证码却比较幸运,有迹可循.在此,给 ...

  9. Python 爬虫四 基础案例-自动登陆github

    GET&POST请求一般格式 爬取Github数据 GET&POST请求一般格式 很久之前在讲web框架的时候,曾经提到过一句话,在网络编程中“万物皆socket”.任何的网络通信归根 ...

随机推荐

  1. 基于artDialog的扩展

    /* * * 引用此文件必须引用以下两个资源文件,并且还要引用jQuery * <link href="ui-dialog.css" rel="stylesheet ...

  2. RabbitMQ 官方NET教程(一)【介绍】

    本教程假定RabbitMQ已在标准端口(5672)上的localhost上安装并运行.如果使用不同的主机,端口或凭据,连接设置将需要调整. RabbitMQ是一个消息代理:它接受并转发消息. 您可以将 ...

  3. 06-联系人管理(xib应用)

    ViewController.h文件中: @interface ViewController : UIViewController - (IBAction)add:(UIBarButtonItem * ...

  4. 浅谈Websocket、Ajax轮询和长轮询(long polling)

    浅谈Websocket.Ajax轮询和长轮询(long p0ll) 最近看到了一些介绍Websocket的文章,觉得挺有用,所以在这里将自己的对其三者的理解记录一下. 1.什么是Websocket W ...

  5. Django学习案例一(blog):四. 使用Admin

    1. 创建超级用户 python manage.py createsuperuser 创建过程中输入用户名,并设定密码(记住). 后台管理汉化.修改settings.py中LANGUAGE_CODE ...

  6. Deutsch lernen (10)

    Dieser Weg Dieser Weg wird kein leichter sein. Dieser Weg wird steinig und schwer. Nicht mit vielen ...

  7. PHP执行Mysql数据库的备份和还原

    使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中. mysqldump命令的工作原理很简单.它先查出需要备份的表的 ...

  8. 多开 MFC线程

    序言:我才编程几年啊!就要处理多线程.对于只写函数的我,这难度简直了!不过MFC的多线程,貌似比较简单,还能处理的了. (1).开MFC多个线程 在视频采集的过程中,如果不使用媒体计数器,会造成主线程 ...

  9. Android 性能测试初探(五)

    书接上文 Android 性能测试初探之 GPU(四) 前文说了的一些性能测试项大家可能都听说,接下来我们聊聊大家不常关注的测试项- 功耗 . 功耗测试主要从以下几个方面入手进行测试 测试手机安装目标 ...

  10. Android 性能测试初探(一)

    Android 性能测试,跟 pc 性能测试一样分为客户端及服务器,但在客户端上的性能测试分为 2 类: 一类为 rom 版本的性能测试 一类为应用的性能测试 对于应用性能测试,包括很多测试项,如启动 ...