python重定向网页_【Python网页分析】httplib库的重定向处理
1. 网页处理
下图是实际操作抓包分析结果,其他的步骤不再描述。
1、从选定的POST /main.aspx开始
2、后面服务器回复302重定向到/cd_chose.aspx页面
3、抓包数据有GET重定向URL,GET css和js文件不再赘述
4、POST到/cd_chose.aspx
2. Python模拟
2.1 抓包分析,后面的GET方法发送不去
再查看IE上抓包结果
没有出现GET方法
怀疑是需要直接POST,尝试了之后仍然失败,但仔细看了下POST内容,头里面有GET头,由于不太了解IE的头显示,不再深究。
2.2 检查消息格式
由于GET这个重定向页面之前定义了HTTP头,
对比网页上实际操作成功发送的头,发现我在Python中多定义了一个头”Content-Type",主要是前面的POST方法需要和头
实际流程里面,前面其他GET消息需要这个头,但本消息中确实不需要这个头。
去掉这个头
查看Python的消息流程正常
这个问题由于自己http基础不踏实,遇到问题不太确定方向,总觉得重定向流程有什么其他的复杂处理。耽搁了很多时间,
结果其实就只是一个头的问题。
最后附上封装的http get和post方法,调用的httplib库,比较灵活方便,可以根据前端js代码,模仿自己生成一些特殊字段认证服务器。
def http_get(self,connDefault=None,url='',bodyFlag=False,refererFresh=False,referer = ''):
status,infor = 1,''
if connDefault is None:
conn = HTTPConnection(self.host,timeout=60)
else:
conn = connDefault
try:
print 'http_get -> enter to get ',url
start = time.time()
print 'http_get -> connect init OK'
conn.request('GET',url,headers=self.headers)
print 'http_get -> wait the response...'
response = conn.getresponse()
end = time.time()
print "http_get -> info:",end - start,response.status
print 'http_get -> response headers' ,response.getheaders()
#状态码
status = response.status
if status != 200:
print 'http_get -> http status error',status
infor = 'error'
else:
#获取Cookie,格式如下ASP.NET_SessionId=pzt0bs55tc2fjrbv0canht45; path=/; HttpOnly
cookie=response.getheader('Set-Cookie','')
#print "http_get -> cookie -> ",cookie
"""
Cookie叠加
"""
if cookie != '':
#cookie键值分两种类型
print 'http_get -> peer Set-Cookie' , cookie
pattern = re.compile(r'(key=[\w=+/]+;|ASP.NET_SessionId=[\w=+/]+;)')
_list = pattern.search(cookie)
#print 'http_get -> _list',_list
if _list is not None:
#print 'http_get -> _list' ,url,_list.groups()
oCookie = self.headers.get('Cookie','')
if oCookie == '':
self.headers["Cookie"] = str(_list.groups()[0][:-1])
else:
self.headers["Cookie"] = oCookie + ';' + str(_list.groups()[0][:-1])
print 'http_get -> request Cookie' ,self.headers["Cookie"]
else:
pass
else:
pass
"""
更新Referer
"""
if refererFresh:
if referer != '':
self.headers["Referer"] = "http://" + self.host + referer
else:
self.headers["Referer"] = "http://" + self.host + url
#获取编码格式,gzip编码会在头中显示定义
content_encoding = response.getheader('Content-Encoding','')
if bodyFlag:
"""
gzip解码
"""
if content_encoding == 'gzip':
buf = StringIO(response.read())
infor = GzipFile(fileobj=buf).read()
else:
infor = response.read()
except Exception,ex:
print 'http_get -> error:',ex
status,infor = 1,ex
finally:
if connDefault is None:
conn.close()
return status,infor
def http_post(self,connDefault=None,url='',PostStr=''):
status,response = 1,''
try:
headers = deepcopy(self.headers)
headers["Content-Type"] ="application/x-www-form-urlencoded"
start = time.time()
if connDefault is None:
conn = HTTPConnection(self.host,timeout=60)
else:
conn = connDefault
headers["Content-Length"] = len(PostStr)
conn.request('POST',url,PostStr,headers=headers)
response = conn.getresponse()
end = time.time()
print "http_post info:",end - start,response.status
#重定向
if response.status == 302:
Location=response.getheader('Location','')
status,response = 302,Location
#正常提交
elif response.status == 200:
status,response = 200,''
else:
status,response = response.status,'does not support'
except Exception,ex:
print 'http_post -> error:',ex
status,response = 1,ex
finally:
if connDefault is None:
conn.close()
return status,response
python重定向网页_【Python网页分析】httplib库的重定向处理相关推荐
- HTML5期末大作业:甜品店网站设计——美食甜品店铺加盟企业(1页) HTML+CSS+JavaScript web期末作业设计网页_美食网页设计作业成品
HTML5期末大作业:甜品店网站设计--美食甜品店铺加盟企业(1页) HTML+CSS+JavaScript web期末作业设计网页_美食网页设计作业成品 常见网页设计作业题材有 个人. 美食. 公司 ...
- Python视频编辑神器:全面分析ffmpeg-python库的安装与使用方法
Python视频编辑神器:全面分析ffmpeg-python库的安装与使用方法 在Python中进行视频编辑是一件令人兴奋的事情,它能够让你深入了解和控制你想要的任何一帧视频.而在Python视频编辑 ...
- python keyboard模块_[python] PyMouse、PyKeyboard用python操作鼠标和键盘
1.PyUserInput 简介 PyUserInput是一个使用python的跨平台的操作鼠标和键盘的模块,非常方便使用.支持的平台及依赖如下: Linux - Xlib Mac - Quartz, ...
- python 病毒 基因_#Python#提取基因对应的蛋白质名
提取基因对应的蛋白质官方名 最开始,是需要将基因跟其编码的蛋白质对应起来,找遍了各种数据库都没发现有相关的注释文件,Uniprot作为处理蛋白质的大佬,结果里都有,肯定有办法能够满足需求. 搜索TP5 ...
- python反序列化漏洞_【事件分析】No.10 影响深远的反序列化漏洞
阅读: 1,806 序列化就是把对象转换成字节流,便于保存在内存.文件.数据库中:反序列化即逆过程,由字节流还原成对象.Java中的ObjectOutputStream类的writeObject()方 ...
- python生成视频_成为视频分析专家:自动生成视频集锦(Python实现)
介绍 我是个超级板球迷.从我记事起,我就迷上了这项运动,至今它仍在我的日常生活中起着重要的作用.我相信很多读到这篇文章的人都会点头! 但是自从我开始工作以来,要跟上所有的比赛就成了一件棘手的事.我不能 ...
- python数据比例_#python# #数据分析# 性别比例分析
手头有一份性别比例的样本数据,清洗后只保留了性别信息,做了一个数据分析. 数据清洗和数据统计的代码就不贴了,贴性别比例pie图和性别比例趋势图的代码. 性别比例pie图: def _plot_gend ...
- python亲和度_数据挖掘——亲和性分析
亲和性分析根据样本个体之间的相似度,确定它们关系的亲疏.应用场景: 1.向网站用户提供多样化的服务或投放定向广告. 2.为了向用户推荐电影或商品 3.根据基因寻找有亲缘关系的人 比如:统计顾客购买了商 ...
- python小数乘法_运营管理案例分析:《质保主管 Hank Kolb》.docx
您所在位置:网站首页 > 海量文档  > 人力资源/企业管理 > 经营企划 运营管理案例分析:<质保主管 Han ...
最新文章
- 在windows下运行Felzenszwalb的Deformable Part Model(DPM)源码voc-release3.1来训练自己的模型
- XLNet再次超越BERT,技术发展太快,如何才能跟得上节奏?
- Java Socket实现客户端服务端之间的通信
- centos 搭建php运行环境
- 如何在win10中安装ArcGIS10.2
- PyTorch学习—18.标准化—Batch Normalization、Layer Normalizatoin、Instance Normalizatoin、Group Normalizatoin
- MAC系统XAMPP 中 MySQL命令行client配置使用
- appscan 9.0.3.12 版本下载
- 修复win10右键卡死鼠标转圈
- 牛客网 - 编程初学者入门训练 - 分支控制(BC50~BC77)
- Maven打包:Error injecting:xxxxxxx / java.lang.NoClassDefFoundError: xxxxxx
- 计算机技术与软件专业技术资格(水平)考试指南
- 基于图神经网络的知识图谱研究进展
- 文娱干货丨如何体系化构建优质社区氛围?
- 上云节省 35%计算资源,420 个运维人天:运满满实时计算实践和思考
- 大数据入门及各类技术介绍
- C - Recursive sequence (矩阵ksm)
- HTML网页部分怎么与上面隔开,HTML网页制作讲义.ppt
- python -m http.server 8000
- 1.8 数学大事年表
热门文章
- eclipse 如何关联git_git的相关操作
- mcldownload文件夹_《我的世界》中国版游戏空间精简教程 多余文件删除方法
- 计算机应用第7章在线测试,《计算机应用基础》第07章在线测试
- react-native拨打电话和安卓端拨打电话
- 基于JAVA+Servlet+JSP+MYSQL的保险管理系统
- C++对txt文本进行读写操作
- 今日心得:人生就像一杯茶,不会苦一辈子但会苦一阵子
- ORACLE查找并解除死锁进程
- Using SharePoint 2003 Web Services to Retrieve Data From A List
- 48 - LeetCode 122 121. 买卖股票的最佳时机