python-54: 验证码登陆尝试
2015-12-13 00:00
441 查看
好了,我们前面已经讲解了怎么找到登陆界面以及从登陆界面源码中获取验证码图片的网址,我们再来回顾一下前面设定的流程,并开始编写代码
先手动登陆,在登陆过程中找到post数据的内容,向哪个网站post数据
使用urlopen 将登陆界面的源码下载下来,并将验证码图片的网址找出来
点击验证码的图片找到要输入的验证码,构建请求,加入post数据,并将所有数据发送到实际登陆的网站
使用cookielib获取cookies,并构造opener自动携带cookies访问其他的页面
来看看结果
![](http://static.oschina.net/uploads/space/2015/1213/123741_fCFN_2429887.png)
这又是为什么呢?
先手动登陆,在登陆过程中找到post数据的内容,向哪个网站post数据
使用urlopen 将登陆界面的源码下载下来,并将验证码图片的网址找出来
点击验证码的图片找到要输入的验证码,构建请求,加入post数据,并将所有数据发送到实际登陆的网站
使用cookielib获取cookies,并构造opener自动携带cookies访问其他的页面
#!/usr/bin/env python # -*- coding:UTF-8 -*- __author__ = "217小月月坑" ''' 验证码登陆try-1 ''' import urllib import urllib2 import re import cookielib # 获取登陆界面的源码并将验证码图片的网址抽取出来 login_url = 'http://id.ifeng.com/allsite/login' headers = {'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:39.0) Gecko/20100101 Firefox/39.0',} pattern = re.compile(r'<img src="(.*?)".*?',re.S) request = urllib2.Request(login_url,headers=headers) contents = urllib2.urlopen(request).read() items = re.findall(pattern,contents) for item in items: print item # 提示用户输入验证码 captcha = raw_input("请输入验证码:") # 构造post数据 data = { 'u': 'xxxxxxxxxxxxxxx@qq.com', 'k': 'xxxxxxxxxxxxxxxxx', 'auth': captcha, 'auto': 'on', 'comfrom':'', 'type': '2', } post_data = urllib.urlencode(data) # 将post 信息发送到接受信息的网址 response = urllib2.urlopen("https://id.ifeng.com/api/sitelogin",post_data) print response.read() # cookies处理 cookieJar = cookielib.CookieJar() handler = urllib2.HTTPCookieProcessor(cookieJar) opener = urllib2.build_opener(handler) response2 = opener.open("http://blog.ifeng.com/16441366.html") print response2.read()
来看看结果
![](http://static.oschina.net/uploads/space/2015/1213/123741_fCFN_2429887.png)
这又是为什么呢?
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- 爬虫笔记
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- python-55: 验证码的生成机制