python模拟http请求
下文主要讲述如何利用python自带的库模拟http请求,为以后利用python做API测试做准备。
只讲述模拟http的过程,具体到自己用的时候,要以自己的应用为准做出适当的调整。
#!coding:utf-8 相信这句大家都懂的,不解释 #导入需要的python模块httplib,用来模拟提交http请求,详细的用法可见python帮助手册 import httplib #导入需要的python模块urllib,用来对数据进行编码
import urllib
#定义请求头 reqheaders={'Content-type':'application/x-www-form-urlencoded',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Host':'www.renren.com',
'Origin':'http://zhichang.renren.com',
'Referer':'http://zhichang.renren.com',
'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1',} #定义post的参数 reqdata={'email':'xxxx@xxx.com',
'password':'xxxx',
'autoLogin':'on',
'origURL':'http://zhichang.renren.com/?login_state=rr',
'domain':'renren.com'
} #对请求参数进行编码 data=urllib.urlencode(reqdata) #利用httplib库模拟接口请求 #先连接到人人 conn=httplib.HTTPConnection('renren.com') #提交登录的post请求
conn.request('POST', '/PLogin.do', data, reqheaders) #获取服务器的返回
res=conn.getresponse() #打印服务器返回的状态
print(res.status) #以dictionary形式答应服务器返回的 response header print(res.msg)
#打印服务器返回请求头中设置的cookie
print(res.getheader('Set-Cookie')) #以下为运行程序后的结果 302 登录成功后重定向了
Server: nginx/1.2.0
Date: Sat, 15 Feb 2014 04:47:09 GMT
Content-Length: 80
Connection: keep-alive
Cache-Control: no-cache
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Location: http://zhichang.renren.com/?login_state=rr 重定向的URL
Set-Cookie: anonymid=hroelq3l-czxmdy; domain=.renren.com; path=/; expires=Thu, 14-Feb-2019 04:47:09 GMT
Set-Cookie: _de=97FB170A42B4342D1C47A157AD77AAFC1383380866D39FF5; domain=.renren.com; path=/; expires=Tue, 10-Feb-2015 04:47:09 GMT
Set-Cookie: p=31991a0a194c34e606ef1263317b06372; domain=renren.com; path=/; expires=Mon, 17-Mar-2014 04:47:09 GMT
Set-Cookie: ap=229996362; domain=renren.com; path=/; expires=Mon, 17-Mar-2014 04:47:09 GMT
Set-Cookie: first_login_flag=1; domain=renren.com; path=/
Set-Cookie: t=c5424876f4a3363b98b6f92e677f04bc2; domain=.renren.com; path=/
Set-Cookie: t=a0196d1d663ad5a060ee47466123042d; domain=renren.com; path=/xtalk/
Set-Cookie: societyguester=c5424876f4a3363b98b6f92e677f04bc2; domain=.renren.com; path=/
Set-Cookie: id=229996362; domain=.renren.com; path=/ (这个是返回的人人ID)
Set-Cookie: xnsid=cc216a6b; domain=.renren.com; path=/ (有这个就登录成功了)
Set-Cookie: loginfrom=syshome; domain=.renren.com; path=/ #以下就是cookie了,以后发请求,就可以带上这个cookie anonymid=hroelq3l-czxmdy; domain=.renren.com; path=/; expires=Thu, 14-Feb-2019 04:47:09 GMT, _de=97FB170A42B4342D1C47A157AD77AAFC1383380866D39FF5; domain=.renren.com; path=/; expires=Tue, 10-Feb-2015 04:47:09 GMT, p=31991a0a194c34e606ef1263317b06372; domain=renren.com; path=/; expires=Mon, 17-Mar-2014 04:47:09 GMT, ap=229996362; domain=renren.com; path=/; expires=Mon, 17-Mar-2014 04:47:09 GMT, first_login_flag=1; domain=renren.com; path=/, t=c5424876f4a3363b98b6f92e677f04bc2; domain=.renren.com; path=/, t=a0196d1d663ad5a060ee47466123042d; domain=renren.com; path=/xtalk/, societyguester=c5424876f4a3363b98b6f92e677f04bc2; domain=.renren.com; path=/, id=229996362; domain=.renren.com; path=/, xnsid=cc216a6b; domain=.renren.com; path=/, loginfrom=syshome; domain=.renren.com; path=/
这是第一次写东西,错误之处敬请见谅,如有错误,和我联系我会第一时间进行修改,谢谢。
python模拟http请求的更多相关文章
- python模拟Get请求保存网易歌曲的url
python模拟Get请求保存网易歌曲的url 作者:vpoet mail:vpoet_sir@163.com 日期:大约在夏季 #coding:utf-8 import requests impor ...
- 教你如何用Python模拟http请求(GET,POST)
模拟http请求有什么用呢? 我们现在使用的所有需要使用网络的:软件 应用 app 网站里面的绝大部分功能都是通过http协议来工作的 什么是http协议? http协议,超文本传输协议(HTTP,H ...
- python模拟http请求2
发现了一个非常好用的第三方module:requests,模拟接口非常简单. 详细了解请移步:http://docs.python-requests.org/en/latest/ 非常不错 #!cod ...
- Python 模拟post请求
# coding:utf-8import requestsurl = "https://passport.cnblogs.com/user/signin" # 接口地址 # 消息头 ...
- 第五十九节,模拟浏览器请求Python结合html基本格式
模拟浏览器请求Python结合html基本格式 用Python模拟一个客户端,结合打开一个HTML页面 创建客户端 #!/usr/bin/env python # -*- coding:utf8 -* ...
- python利用requests库模拟post请求时json的使用
我们都见识过requests库在静态网页的爬取上展现的威力,我们日常见得最多的为get和post请求,他们最大的区别在于安全性上: 1.GET是通过URL方式请求,可以直接看到,明文传输. 2.POS ...
- Python数据库访问公共组件及模拟Http请求
前言 最近一段时间除了忙于工作之外,在业余时,迷上了python,对它的跨平台深深的吸引.经过一段时间的自我学习,了解了其基本的语法,便开始自己着手摆弄起来.主要想把以前对接的接口再实现一次,以便于在 ...
- python入门常用方法(转json,模拟浏览器请求头,写入文件)
转json import jsonjson = json.loads(html) 模拟浏览器请求头 import urllib.request req = urllib.request.Request ...
- [Python] Python 模拟登录,并请求
Python 模拟登录,并请求 # encoding: utf- import requests import socket import time socket.setdefaulttimeout( ...
随机推荐
- 【UVA】【11021】麻球繁衍
数序期望 刘汝佳老师的白书上的例题……参见白书 //UVA 11021 #include<cmath> #include<cstdio> #define rep(i,n) fo ...
- Matlab中@与函数调用
function m f=@(x) x^2; y(f,3); function y(f,x) disp(num2str(f(x))); end end 函数调用另一个函数的时候,把另一个函数名作为参数 ...
- eclipse svn 修改了类名之后提交
win下面的文件名不区分大小写,所以不能只是把小写类名改成大写. 正确的做法有如下两种:1,先删除类a,提交,此操作会删除服务器上的文件.再添加类A,提交.2,重命名a为aa,提交,此操作会删除服务器 ...
- Java基于Socket文件传输示例(转)
最近需要进行网络传输大文件,于是对基于socket的文件传输作了一个初步的了解.在一位网友提供的程序基础上,俺进行了一些加工,采用了缓冲输入/输出流来包装输出流,再采用数据输入/输出输出流进行包装,加 ...
- unit3d 4.6 document open solution
发现4.6 的 本地 文档字体解析采用 fonts.googleapis.com ,可是google 自古就与天朝不在一个鼻孔,所以你打开往往需要半天. 网上查了一下,把所有本地的*.html 文档 ...
- Android Dock底座应用开发
很多网友可能发现部分Android手机或平板支持底座,目前比较主流的有摩托罗拉系列,中低端的Milestone和Milestone 2代均可以使用充电底座或多媒体底座,网购大概50元左右.而中高端的A ...
- libvirt编译报错
virsh # list --all错误:连接到管理程序失败错误:无效的连接错误:将插槽连接到 '/usr/local/var/run/libvirt/libvirt-sock' 失败: 没有那个文件 ...
- 区间dp笔记√
区间DP是一类在区间上进行dp的最优问题,一般是根据问题设出一个表示状态的dp,可以是二维的也可以是三维的,一般情况下为二维. 然后将问题划分成两个子问题,也就是一段区间分成左右两个区间,然后将左右两 ...
- 李洪强iOS开发之让您的Xcode键字如飞
手指在键盘上飞速跳跃,终端上的代码也随着飞舞,是的这确实很酷.优秀的程序员总是这么一群人,他们不拘于现状,不固步自封,他们喜欢新奇的事,他们把自己发挥到极致. 指法攻略 放下您钟爱的鼠标吧,在前行之中 ...
- 转一个distinct用法,很有帮助
转一个distinct用法,很有帮助 (2011-12-01 15:18:11) 转载▼ 标签: 杂谈 分类: mysql复制 在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提 ...