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 相关文章推荐
pygame学习笔记(6):完成一个简单的游戏
Apr 15 Python
pip matplotlib报错equired packages can not be built解决
Jan 06 Python
微信跳一跳python自动代码解读1.0
Jan 12 Python
Python 2.7中文显示与处理方法
Jul 16 Python
Python GUI编程完整示例
Apr 04 Python
浅谈python3中input输入的使用
Aug 02 Python
详解PyTorch手写数字识别(MNIST数据集)
Aug 16 Python
基于python 凸包问题的解决
Apr 16 Python
python实现图书馆抢座(自动预约)功能的示例代码
Sep 29 Python
python如何写个俄罗斯方块
Nov 06 Python
Python爬虫之Selenium实现窗口截图
Dec 04 Python
详解Python魔法方法之描述符类
May 26 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制作的意见反馈表源码
2007/03/11 PHP
PHP 木马攻击防御技巧
2009/06/13 PHP
php 8小时时间差的解决方法小结
2009/12/22 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
2013/06/03 PHP
PHP遍历文件夹与文件类及处理类用法实例
2014/09/23 PHP
thinkPHP导出csv文件及用表格输出excel的方法
2015/12/30 PHP
Linux php 中文乱码的快速解决方法
2016/05/13 PHP
PHP检测数据类型的几种方法(总结)
2017/03/04 PHP
老生常谈PHP面向对象之注册表模式
2017/05/26 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
如何让页面加载完成后执行js
2013/06/26 Javascript
js函数参数设置默认值的一种变通实现方法
2014/05/26 Javascript
简单的jquery左侧导航栏和页面选中效果
2014/08/21 Javascript
基于NodeJS的前后端分离的思考与实践(四)安全问题解决方案
2014/09/26 NodeJs
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
前端面试知识点锦集(JavaScript篇)
2016/12/28 Javascript
浅谈mint-ui 填坑之路
2017/11/06 Javascript
弱类型语言javascript开发中的一些坑实例小结【变量、函数、数组、对象、作用域等】
2019/08/07 Javascript
seajs和requirejs模块化简单案例分析
2019/08/26 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
[02:07]DOTA2超级联赛专访BBC:难忘网吧超神经历
2013/06/09 DOTA
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
Python3.x爬虫下载网页图片的实例讲解
2018/05/22 Python
解决python中 f.write写入中文出错的问题
2018/10/31 Python
python字典嵌套字典的情况下找到某个key的value详解
2019/07/10 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
python线程池 ThreadPoolExecutor 的用法示例
2020/10/10 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
2021/03/02 Python
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
办公室主任职责范本
2014/03/07 职场文书
离职信范本
2015/06/23 职场文书
工作服管理制度范本
2015/08/06 职场文书
导游词之丹东鸭绿江
2019/10/24 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python