本篇文章是一篇关于包服务器的帖子
POST/GET 包是神马货色呢。
首先先绍介一下当我们在浏览器中键入URL后, 浏览器中到底发生了什么吧。
根据来原的知识,我们可以道知,如果计算机和服务器要讯通的话,必须道知服务器确准的IP址地,那我们的URL中一般是不会存在IP址地的,而是域名,类似于facebook.com 当我们键入facebook.com 并回车后,浏览器会先在浏览器缓存中寻觅facebook.com 所对应的IP址地,如果缓存没有,浏览器将请求统系缓存,如果统系缓存中也没有,那么统系起发对ISP服务商的DNS服务器的剖析请求,如果没有,那么将向更层上的域名服务器起发请求。这个程过,叫做域名剖析。当然内国facebook.com可以被确正剖析,但是没法拜访,这归功于巨大的GFW。
面下我们用baidu.com举例吧。
第二行面后就随着baidu.com所对应的服务器的ip址地。
以后,浏览器会向服务器发送一个GET请求,让我们用HTTPanalyzer截拦一个。
Host: www.baidu.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: ***********************************
可以从字面意思失掉,我们给服务器发送个各种本机的信息,其中括包浏览器内核,可接受的页网格式,缩压格式,语言,语言编码,以及Cookies。
Cookies 是身份证验的要重组件。
而当我们填写页网下面的的表格时,浏览器会向服务器发送POST数据包,较之GET包,除了Request Header , 还有BODY分部,来放存表单的内容,其内容可能被密加或者缩压。
当初,我们来用Python,建创GET包和POST包。
至于有什么处用,大家慢慢领会。
Python 中包含了量大的库,作为一门新兴的语言,Python 对HTTP有充足大强的持支。
当初,我们引入新的库 httplib 以及 urllib
这两个库根据称名,我们可以道知他们是对于HTTP以及URL的操纵。
让我们直入主题,HOW to Build a post or get
首先我们先要与服务器立建连接。(我们以某微博作为例子实现下文的各种功能)
conn = httplib.HTTPConnection("ti50*****com");
只要没有示提错误,我们就能够为认连接已胜利,面下就能够停止数据包发送了。
在上文中我们说过了GET包的构结,只有HEARDER 分部。而在httplib中,heaer 是通过一个字典来保存的。面下我们来定义它:
headers = {"Content-Type": "application/x-www-form-urlencoded",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Referer": "http://ti50.*****com/g/s?sid=*********************",
"Accept-Encoding": "",
"Accept-Language": "zh-CN,zh;q=0.8",
"Accept-Charset": "GBK,utf-8;q=0.7,*;q=0.3",
"Cookie": Cookie }
Accept-Encoding 我们删除了其内容,这对于服务器说来我们客户端不能接受任何缩压的格式,数据包将用原始数据发送来回,这样我们就能够省去解缩压的程过直接分析页网了,但是这样做的果后是流量大,网络时实性差。关于解缩压天然有别的库来专门处置。
然后我们可以直接发送了。
conn.request(method="GET",url='''http://ti50****com/g/s?*********_TK9EH&r=''' + go_num + '''&aid=amsg&bid=******=true&ifh=1&ngpd=false''',headers=headers);
method 段字说明是发送何种类型的数据包。
url 段字以字符串的情势定义址地
header 段字定义包头。
一般说来,一个数据包发送至服务器,服务器会响应的返回一个应答包。而且这个应答包对于我们往往是有效的,我们用面下的令命取获应答包。
response = conn.getresponse();
对于下面这条语句中的括号,其表现读取应答包的前多少个字符。
POST包与GET包的建创程过基本雷同。
只是我们须要新定义BODY,这个分部可以用字符串的式方停止定义。
params = 'msg=***************************'
我们仍然须要先于服务器停止连接。
conn = httplib.HTTPConnection("ti50*****com");
宽容,是一种坦荡,可以无私无畏,无拘无束,无尘无染。宽容,是一种豁达,是比海洋和天空更为博大的胸襟,是宽广和宽厚的叠加,延续和升华。宽容有度,宽容无价,宽以待人,这是人生处世的基本法则。
发送
conn.request(method="POST",url='''/g/s?sid=******************&ngpd=false''',body=params,headers=headers);
可以发明下面的这个公式和发送GET包的格式略有差距。
- method 改变了。
- url 里头没有写域名。
- 多了一个body 段字。
其中第二条可以想到,如果没定义域名,则统系将近来一次与服务器的连接用的域名停止替换。
取获应答包的式方与GET包雷同。
杂乱无章的小应用。
(一) 随机字符串的生成。
当我们用POST做一些很趣有的情事时,常常会到遇服务器证验神马的,有时候我们可以用随机字符串来处置这样的情况。
python 中给了随机数的库…… random。
对于单简的应用非常便利。例如我们生产a与b 之间的一个随机整数。
random.randint(a,b)
道知了这步,我们可以很单简的编写一个随机字符串的程序了,
from random import Random def random_str(randomlength): str = '' chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789' length = len(chars) - 1 random = Random() for i in range(randomlength): str+=chars[random.randint(0, length)] return str
明显当用调此函数时应当给出随机字符串度长。
当然,我们也可以通过改修chars中的字符来定义随机字符串中的字符。
(二) 程序运行时光
我们当初给出一个非常不精确的程序时光计算方法,
from time import clock as now start = now() finish = now() run_time = finish - start print run_time
文章结束给大家分享下程序员的一些笑话语录: 一个程序员对自己的未来很迷茫,于是去问上帝。
"万能的上帝呀,请你告诉我,我的未来会怎样?"
上帝说"我的孩子,你去问Lippman,他现在领导的程序员的队伍可能是地球上最大的"
于是他去问Lippman。
Lippman说"程序员的未来就是驾驭程序员"
这个程序员对这个未来不满意,于是他又去问上帝。
"万能的上帝呀,请你告诉我,我的未来会怎样?"
上帝说"我的孩子,你去问Gates,他现在所拥有的财产可能是地球上最多的"
于是他去问Gates。
Gates说"程序员的未来就是榨取程序员"
这个程序员对这个未来不满意,于是他又去问上帝。
"万能的上帝呀,请你告诉我,我的未来会怎样?"
上帝说"我的孩子,你去问侯捷,他写的计算机书的读者可能是地球上最多的"
于是他去问侯捷。
侯捷说"程序员的未来就是诱惑程序员"
这个程序员对这个未来不满意,于是他又去问上帝。
"万能的上帝呀,请你告诉我,我的未来会怎样?"
上帝摇摇头"唉,我的孩子,你还是别当程序员了")
相关推荐
通过理解这个过程,你可以更好地理解网络通信的基本原理,以及Python在网络编程中的应用。 首先,让我们了解HTTP(超文本传输协议)的基础。HTTP是互联网上应用最广泛的一种数据交换协议,用于客户端和服务器之间的...
python--playwright修改GET/POST请求参数,抓包修改数据,内含: 1、index.py主代码,演示完整的抓包修改数据demo 2、flaskServer.py服务端,用于返回传入的参数 运行顺序: 先运行:python flaskServer.py 然后再...
我们可以通过这些模块来构建GET和POST请求。 1. **urllib2模块**: - `urllib2.get()`:这个函数用于创建GET请求。例如,我们可以创建一个`Request`对象,然后使用`urlopen`打开它来获取响应。在提供的`urllib2Get...
总的来说,这个"Android-一个python的网页postget以及上传图片的工具类"提供了便捷的Python接口,帮助Android开发者更高效地进行网络通信,尤其是处理图片上传等复杂任务。通过合理地利用这样的工具,开发者可以将更...
在本项目中,“python项目练习-python3实现web服务器”是一个基于Python 3的实践教程,旨在帮助学习者掌握如何利用Python构建一个简单的Web服务器。实验楼是一个在线学习平台,提供了这个项目的原始版本,而这里所述...
在这个场景中,我们关注的是如何使用libcurl库(一个强大的URL传输库)在C++中向一个用Python编写的简单服务器发送POST请求,同时携带JSON数据。让我们深入探讨这个过程中的关键知识点。 首先,我们要了解Python的...
在Python爬虫开发中,有时候我们需要模拟POST请求与服务器交互,获取特定的数据。在处理某些网站时,我们可能遇到POST请求需要使用`request payload`格式的情况。与常见的`form data`不同,`request payload`是一种...
Python中的HTTP请求主要涉及到两个常见的方法:GET和POST,它们是Web交互中最基本的数据传递方式。...通过理解如何使用`urllib`库,我们可以更有效地与服务器进行数据交互,构建更复杂的网络应用程序。
Python爬虫技术是数据获取的重要手段,特别是在大数据时代,它被广泛应用于数据分析、网站信息抓取等领域。在Python中,`requests`库是进行HTTP请求的首选工具,它提供了简单易用的接口来发送GET、POST等不同类型的...
在本试卷中,涵盖了Python的基础语法、面向对象编程、文件操作、正则表达式、网络请求、数据可视化以及数据处理等多个核心知识点。 1. 正则表达式是Python中进行文本匹配和查找的强大工具。例如,题目中的"^(ab|b)+...
http服务搭建 自己修改get post命令后服务器操作即可。
总结,Python3中的HTTP请求处理主要依赖`requests`库,它提供了方便的接口用于发送GET和POST请求,以及处理其他HTTP方法。GET用于获取资源,POST用于提交数据。通过设置请求头和参数,我们可以自定义HTTP请求的细节...
在Linux系统,特别是CentOS 7中,搭建Python 3的开发环境对于许多开发者来说是一项基本任务。Python 3是一个强大的编程语言,广泛应用于Web开发、自动化脚本、数据分析等领域。而pip3是Python 3的包管理器,用于安装...
- **POST请求**:不仅可以GET数据,还可以POST数据,常用于提交表单或上传文件。 ```python data = {'key': 'value'} response = requests.post('http://www.example.com', data=data) ``` - **文件上传**:通过`...
Python的aiohttp库是为Python的异步IO框架asyncio设计的一个强大的工具,它集成了HTTP客户端和服务器的功能,使得在Python中处理网络请求变得高效且简洁。这个库允许开发者在同一时间处理多个网络连接,极大地提高了...
Python的requests库是...总的来说,这个离线包提供了一个完整的解决方案,让你在没有网络的情况下也能在Python环境中安装和使用requests库,以及其相关的依赖库,这对于那些网络不稳定或者有安全限制的环境非常有用。
在Python编程中,GET和POST是HTTP协议中最常用的两种请求方法,它们主要在发送数据到服务器时有不同的行为和用途。 1. 数据传输位置: - GET:数据通过URL(Uniform Resource Locator)作为查询字符串附加在URL...
客户端代码在`client.py`中,可能包括创建一个socket对象,连接到服务器,然后构造一个HTTP请求(如GET或POST)。对于GET请求,只需发送URL;对于POST请求,还需要添加请求体,通常包含要发送的数据。客户端还会接收...