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 相关文章推荐
python实现的简单文本类游戏实例
Apr 28 Python
Python字符串逐字符或逐词反转方法
May 21 Python
python删除过期文件的方法
May 29 Python
python利用高阶函数实现剪枝函数
Mar 20 Python
pandas全表查询定位某个值所在行列的方法
Apr 12 Python
Python用for循环实现九九乘法表
May 31 Python
python调用百度REST API实现语音识别
Aug 30 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
Oct 29 Python
pygame游戏之旅 python和pygame安装教程
Nov 20 Python
Python数据持久化存储实现方法分析
Dec 21 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
Feb 14 Python
pandas apply多线程实现代码
Aug 17 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
php中常用字符串处理代码片段整理
2011/11/07 PHP
kohana框架上传文件验证规则写法示例
2014/07/14 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
利用PHP如何写APP接口详解
2016/08/23 PHP
PHP简单验证码功能机制实例详解
2019/03/27 PHP
用jQuery实现检测浏览器及版本的脚本代码
2008/01/22 Javascript
javascript同步Import,同步调用外部js的方法
2008/07/08 Javascript
基于jquery的无限级联下拉框js插件
2011/10/29 Javascript
js实现倒计时时钟的示例代码
2013/12/17 Javascript
JavaScript匿名函数用法分析
2015/02/13 Javascript
jQuery动态加载css文件实现方法
2016/06/15 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
2016/08/19 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
2017/01/19 Javascript
servlet+jquery实现文件上传进度条示例代码
2017/01/25 Javascript
快速掌握jquery分页插件jqPaginator的使用方法
2017/08/09 jQuery
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
React Native自定义控件底部抽屉菜单的示例
2018/02/08 Javascript
Vue项目分环境打包的实现步骤
2018/04/02 Javascript
微信小程序结合mock.js实现后台模拟及调试
2019/03/28 Javascript
微信小程序图表插件wx-charts用法实例详解
2019/05/20 Javascript
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
React+TypeScript+webpack4多入口配置详解
2019/08/08 Javascript
微信小程序 wx.getUserInfo引导用户授权问题实例分析
2020/03/09 Javascript
微信小程序个人中心的列表控件实现代码
2020/04/26 Javascript
vue实现把接口单独存放在一个文件方式
2020/08/13 Javascript
nodejs处理tcp连接的核心流程
2021/02/26 NodeJs
Python使用django获取用户IP地址的方法
2015/05/11 Python
详解Python3中的迭代器和生成器及其区别
2018/10/09 Python
浅谈pyqt5在QMainWindow中布局的问题
2019/06/21 Python
CSS3属性background-size使用指南
2014/12/09 HTML / CSS
社区戒毒工作方案
2014/06/04 职场文书
2015年春训学习心得体会范文
2015/03/09 职场文书
2015年学校德育工作总结
2015/04/22 职场文书
防汛通知
2015/04/25 职场文书
初中英语教学随笔
2015/08/15 职场文书