python实现网站的模拟登录


Posted in Python onJanuary 04, 2016

本文主要用python实现了对网站的模拟登录。通过自己构造post数据来用Python实现登录过程。

当你要模拟登录一个网站时,首先要搞清楚网站的登录处理细节(发了什么样的数据,给谁发等...)。我是通过HTTPfox来抓取http数据包来分析该网站的登录流程。同时,我们还要分析抓到的post包的数据结构和header,要根据提交的数据结构和heander来构造自己的post数据和header。

分析结束后,我们要构造自己的HTTP数据包,并发送给指定url。我们通过urllib2等几个模块提供的API来实现request请求的发送和相应的接收。
大部分网站登录时需要携带cookie,所以我们还必须设置cookie处理器来保证cookie。

具体代码和讲解如下

#!/usr/bin/python 
 
import HTMLParser 
import urlparse 
import urllib 
import urllib2 
import cookielib 
import string 
import re 
 
#登录的主页面 
hosturl = '******' //自己填写 
#post数据接收和处理的页面(我们要向这个页面发送我们构造的Post数据) 
posturl = '******' //从数据包中分析出,处理post请求的url 
 
#设置一个cookie处理器,它负责从服务器下载cookie到本地,并且在发送请求时带上本地的cookie 
cj = cookielib.LWPCookieJar() 
cookie_support = urllib2.HTTPCookieProcessor(cj) 
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler) 
urllib2.install_opener(opener) 
 
#打开登录主页面(他的目的是从页面下载cookie,这样我们在再送post数据时就有cookie了,否则发送不成功) 
h = urllib2.urlopen(hosturl) 
 
#构造header,一般header至少要包含一下两项。这两项是从抓到的包里分析得出的。 
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1', 
  'Referer' : '******'} 
#构造Post数据,他也是从抓大的包里分析得出的。 
postData = {'op' : 'dmlogin', 
  'f' : 'st', 
  'user' : '******', //你的用户名 
  'pass' : '******', //你的密码,密码可能是明文传输也可能是密文,如果是密文需要调用相应的加密算法加密 
  'rmbr' : 'true', //特有数据,不同网站可能不同 
  'tmp' : '0.7306424454308195' //特有数据,不同网站可能不同 
 
  } 
 
#需要给Post数据编码 
postData = urllib.urlencode(postData) 
 
#通过urllib2提供的request方法来向指定Url发送我们构造的数据,并完成登录过程 
request = urllib2.Request(posturl, postData, headers) 
print request 
response = urllib2.urlopen(request) 
text = response.read() 
print text

领取干货:零基础入门学习python视频教程

 以上就是本文的全部内容,希望大家相互交流相互学习,共同进步!

Python 相关文章推荐
pyqt4教程之messagebox使用示例分享
Mar 07 Python
Python xlrd读取excel日期类型的2种方法
Apr 28 Python
python去掉行尾的换行符方法
Jan 04 Python
python删除不需要的python文件方法
Apr 24 Python
Python自动化运维之Ansible定义主机与组规则操作详解
Jun 13 Python
详解python中的time和datetime的常用方法
Jul 08 Python
详解Python3 中的字符串格式化语法
Jan 15 Python
python文件和文件夹复制函数
Feb 07 Python
django在保存图像的同时压缩图像示例代码详解
Feb 11 Python
python实现二分类和多分类的ROC曲线教程
Jun 15 Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
Nov 28 Python
python中validators库的使用方法详解
Sep 23 Python
Python实现简单的文件传输与MySQL备份的脚本分享
Jan 03 #Python
简单介绍Python中的几种数据类型
Jan 02 #Python
简单实现python爬虫功能
Dec 31 #Python
python实现颜色空间转换程序(Tkinter)
Dec 31 #Python
基于python的Tkinter实现一个简易计算器
Dec 31 #Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
Dec 31 #Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
Dec 31 #Python
You might like
基于mysql的bbs设计(五)
2006/10/09 PHP
PHP SEO优化之URL优化方法
2011/04/21 PHP
PHP学习笔记(三):数据类型转换与常量介绍
2015/04/17 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
PHP读取文件的常见几种方法
2016/11/03 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
浅谈PHP匿名函数和闭包
2019/03/08 PHP
JavaScript中URL编码函数代码
2011/01/11 Javascript
用jquery方法操作radio使其默认选项是否
2013/09/10 Javascript
javascript 处理null及null值示例
2014/06/09 Javascript
jquery简单实现外部链接用新窗口打开的方法
2015/05/30 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
2016/03/24 Javascript
jQuery 局部div刷新和全局刷新方法总结
2016/10/05 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
2017/03/30 Javascript
微信小程序 支付功能实现PHP实例详解
2017/05/12 Javascript
webpack 处理CSS资源的实现
2019/09/27 Javascript
vue中el-input绑定键盘按键(按键修饰符)
2020/07/22 Javascript
Python lambda和Python def区别分析
2014/11/30 Python
python 中的divmod数字处理函数浅析
2017/10/17 Python
Python编程实现tail-n查看日志文件的方法
2019/07/08 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
python多线程实现代码(模拟银行服务操作流程)
2020/01/13 Python
python入门之井字棋小游戏
2020/03/05 Python
Meli Melo官网:名媛们钟爱的英国奢侈手包品牌
2017/04/17 全球购物
我的五年职业生涯规划
2014/01/23 职场文书
竞选生活委员演讲稿
2014/04/28 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
市场营销专业自荐书
2014/06/10 职场文书
2014预备党员党课学习心得范文
2014/07/08 职场文书
教师党员自我评价范文
2015/03/04 职场文书
朝花夕拾读书笔记
2015/06/29 职场文书
跟班学习心得体会(共6篇)
2016/01/23 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
postgresql使用filter进行多维度聚合的解决方法
2021/07/16 PostgreSQL
SQL注入篇学习之盲注/宽字节注入
2022/03/03 MySQL
Go gorilla/sessions库安装使用
2022/08/14 Golang