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实现linux服务器批量修改密码并生成execl
Apr 22 Python
跟老齐学Python之总结参数的传递
Oct 10 Python
Python中正则表达式的详细教程
Apr 30 Python
python增加矩阵维度的实例讲解
Apr 04 Python
python requests证书问题解决
Sep 05 Python
Python简易计算器制作方法代码详解
Oct 31 Python
Python run()函数和start()函数的比较和差别介绍
May 03 Python
Python基于callable函数检测对象是否可被调用
Oct 16 Python
Python Selenium操作Cookie的实例方法
Feb 28 Python
使用pandas模块实现数据的标准化操作
May 14 Python
Python实现Matplotlib,Seaborn动态数据图
May 06 Python
pandas中pd.groupby()的用法详解
Jun 16 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运行模式的深入理解
2013/06/03 PHP
php旋转图片90度的方法
2013/11/07 PHP
PHP魔术方法的使用示例
2015/06/23 PHP
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
PHP中静态变量的使用方法实例分析
2016/12/01 PHP
PHP查询分页的实现代码
2017/06/09 PHP
在Laravel5中正确设置文件权限的方法
2019/05/22 PHP
Laravel基础-关于引入公共文件的两种方式
2019/10/18 PHP
如何取得中文输入的真实长度?
2006/06/24 Javascript
(function(){})()的用法与优点
2007/03/11 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
node.js正则表达式获取网页中所有链接的代码实例
2014/06/03 Javascript
js实现DOM走马灯特效的方法
2015/01/21 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
一起学写js Calender日历控件
2016/04/14 Javascript
html5+javascript实现简单上传的注意细节
2016/04/18 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
完美的js图片轮换效果
2017/02/05 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
React操作真实DOM实现动态吸底部的示例
2017/10/23 Javascript
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
vue仿ios列表左划删除
2019/09/26 Javascript
vue跳转页面的几种方法(推荐)
2020/03/26 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
python logging日志模块的详解
2017/10/29 Python
python3如何将docx转换成pdf文件
2018/03/23 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
2020/01/15 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
2020/02/14 Python
浅谈keras使用中val_acc和acc值不同步的思考
2020/06/18 Python
北京泡泡网网络有限公司.net面试题
2012/07/17 面试题
社区国庆节活动方案
2014/02/05 职场文书
2014年教师党员自我评议
2014/09/19 职场文书
会议主持词开场白
2015/05/28 职场文书