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库的重定向处理相关推荐

  1. HTML5期末大作业:甜品店网站设计——美食甜品店铺加盟企业(1页) HTML+CSS+JavaScript web期末作业设计网页_美食网页设计作业成品

    HTML5期末大作业:甜品店网站设计--美食甜品店铺加盟企业(1页) HTML+CSS+JavaScript web期末作业设计网页_美食网页设计作业成品 常见网页设计作业题材有 个人. 美食. 公司 ...

  2. Python视频编辑神器:全面分析ffmpeg-python库的安装与使用方法

    Python视频编辑神器:全面分析ffmpeg-python库的安装与使用方法 在Python中进行视频编辑是一件令人兴奋的事情,它能够让你深入了解和控制你想要的任何一帧视频.而在Python视频编辑 ...

  3. python keyboard模块_[python] PyMouse、PyKeyboard用python操作鼠标和键盘

    1.PyUserInput 简介 PyUserInput是一个使用python的跨平台的操作鼠标和键盘的模块,非常方便使用.支持的平台及依赖如下: Linux - Xlib Mac - Quartz, ...

  4. python 病毒 基因_#Python#提取基因对应的蛋白质名

    提取基因对应的蛋白质官方名 最开始,是需要将基因跟其编码的蛋白质对应起来,找遍了各种数据库都没发现有相关的注释文件,Uniprot作为处理蛋白质的大佬,结果里都有,肯定有办法能够满足需求. 搜索TP5 ...

  5. python反序列化漏洞_【事件分析】No.10 影响深远的反序列化漏洞

    阅读: 1,806 序列化就是把对象转换成字节流,便于保存在内存.文件.数据库中:反序列化即逆过程,由字节流还原成对象.Java中的ObjectOutputStream类的writeObject()方 ...

  6. python生成视频_成为视频分析专家:自动生成视频集锦(Python实现)

    介绍 我是个超级板球迷.从我记事起,我就迷上了这项运动,至今它仍在我的日常生活中起着重要的作用.我相信很多读到这篇文章的人都会点头! 但是自从我开始工作以来,要跟上所有的比赛就成了一件棘手的事.我不能 ...

  7. python数据比例_#python# #数据分析# 性别比例分析

    手头有一份性别比例的样本数据,清洗后只保留了性别信息,做了一个数据分析. 数据清洗和数据统计的代码就不贴了,贴性别比例pie图和性别比例趋势图的代码. 性别比例pie图: def _plot_gend ...

  8. python亲和度_数据挖掘——亲和性分析

    亲和性分析根据样本个体之间的相似度,确定它们关系的亲疏.应用场景: 1.向网站用户提供多样化的服务或投放定向广告. 2.为了向用户推荐电影或商品 3.根据基因寻找有亲缘关系的人 比如:统计顾客购买了商 ...

  9. python小数乘法_运营管理案例分析:《质保主管 Hank Kolb》.docx

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp人力资源/企业管理&nbsp>&nbsp经营企划 运营管理案例分析:<质保主管 Han ...

最新文章

  1. 在windows下运行Felzenszwalb的Deformable Part Model(DPM)源码voc-release3.1来训练自己的模型
  2. XLNet再次超越BERT,技术发展太快,如何才能跟得上节奏?
  3. Java Socket实现客户端服务端之间的通信
  4. centos 搭建php运行环境
  5. 如何在win10中安装ArcGIS10.2
  6. PyTorch学习—18.标准化—Batch Normalization、Layer Normalizatoin、Instance Normalizatoin、Group Normalizatoin
  7. MAC系统XAMPP 中 MySQL命令行client配置使用
  8. appscan 9.0.3.12 版本下载
  9. 修复win10右键卡死鼠标转圈
  10. 牛客网 - 编程初学者入门训练 - 分支控制(BC50~BC77)
  11. Maven打包:Error injecting:xxxxxxx / java.lang.NoClassDefFoundError: xxxxxx
  12. 计算机技术与软件专业技术资格(水平)考试指南
  13. 基于图神经网络的知识图谱研究进展
  14. 文娱干货丨如何体系化构建优质社区氛围?
  15. 上云节省 35%计算资源,420 个运维人天:运满满实时计算实践和思考
  16. 大数据入门及各类技术介绍
  17. C - Recursive sequence (矩阵ksm)
  18. HTML网页部分怎么与上面隔开,HTML网页制作讲义.ppt
  19. python -m http.server 8000
  20. 1.8 数学大事年表

热门文章

  1. eclipse 如何关联git_git的相关操作
  2. mcldownload文件夹_《我的世界》中国版游戏空间精简教程 多余文件删除方法
  3. 计算机应用第7章在线测试,《计算机应用基础》第07章在线测试
  4. react-native拨打电话和安卓端拨打电话
  5. 基于JAVA+Servlet+JSP+MYSQL的保险管理系统
  6. C++对txt文本进行读写操作
  7. 今日心得:人生就像一杯茶,不会苦一辈子但会苦一阵子
  8. ORACLE查找并解除死锁进程
  9. Using SharePoint 2003 Web Services to Retrieve Data From A List
  10. 48 - LeetCode 122 121. 买卖股票的最佳时机