`
siu23
  • 浏览: 17587 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

包服务器Python 中的POST/GET包构建以及随机字符串的生成。Python 初级应用

阅读更多

本篇文章是一篇关于包服务器的帖子

    POST/GET 包是神马货色呢。

    首先先绍介一下当我们在浏览器中键入URL后, 浏览器中到底发生了什么吧。

    根据来原的知识,我们可以道知,如果计算机和服务器要讯通的话,必须道知服务器确准的IP址地,那我们的URL中一般是不会存在IP址地的,而是域名,类似于facebook.com 当我们键入facebook.com 并回车后,浏览器会先在浏览器缓存中寻觅facebook.com 所对应的IP址地,如果缓存没有,浏览器将请求统系缓存,如果统系缓存中也没有,那么统系起发对ISP服务商的DNS服务器的剖析请求,如果没有,那么将向更层上的域名服务器起发请求。这个程过,叫做域名剖析。当然内国facebook.com可以被确正剖析,但是没法拜访,这归功于巨大的GFW。

    面下我们用baidu.com举例吧。

    image

    第二行面后就随着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包的格式略有差距。

    

  1. method 改变了。
  2. url 里头没有写域名。
  3. 多了一个body 段字。

    其中第二条可以想到,如果没定义域名,则统系将近来一次与服务器的连接用的域名停止替换。

    取获应答包的式方与GET包雷同。

    


    杂乱无章的小应用。

    (一) 随机字符串的生成。

    当我们用POST做一些很趣有的情事时,常常会到遇服务器证验神马的,有时候我们可以用随机字符串来处置这样的情况。

    python 中给了随机数的库…… random。

    对于单简的应用非常便利。例如我们生产a与b 之间的一个随机整数。

random.randint(a,b)

image

    道知了这步,我们可以很单简的编写一个随机字符串的程序了,

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

明显当用调此函数时应当给出随机字符串度长。

    image

    当然,我们也可以通过改修chars中的字符来定义随机字符串中的字符。

    (二) 程序运行时光

    我们当初给出一个非常不精确的程序时光计算方法,

from time import clock as now

start = now()

finish = now()

run_time = finish - start

print run_time

image

文章结束给大家分享下程序员的一些笑话语录: 一个程序员对自己的未来很迷茫,于是去问上帝。
"万能的上帝呀,请你告诉我,我的未来会怎样?"
上帝说"我的孩子,你去问Lippman,他现在领导的程序员的队伍可能是地球上最大的"
于是他去问Lippman。
Lippman说"程序员的未来就是驾驭程序员"
这个程序员对这个未来不满意,于是他又去问上帝。
"万能的上帝呀,请你告诉我,我的未来会怎样?"
上帝说"我的孩子,你去问Gates,他现在所拥有的财产可能是地球上最多的"
于是他去问Gates。
Gates说"程序员的未来就是榨取程序员"
这个程序员对这个未来不满意,于是他又去问上帝。
"万能的上帝呀,请你告诉我,我的未来会怎样?"
上帝说"我的孩子,你去问侯捷,他写的计算机书的读者可能是地球上最多的"
于是他去问侯捷。
侯捷说"程序员的未来就是诱惑程序员"
这个程序员对这个未来不满意,于是他又去问上帝。
"万能的上帝呀,请你告诉我,我的未来会怎样?"
上帝摇摇头"唉,我的孩子,你还是别当程序员了")

分享到:
评论

相关推荐

    Python实现简单的HTTP服务器(GET/POST)

    通过理解这个过程,你可以更好地理解网络通信的基本原理,以及Python在网络编程中的应用。 首先,让我们了解HTTP(超文本传输协议)的基础。HTTP是互联网上应用最广泛的一种数据交换协议,用于客户端和服务器之间的...

    python-playwright修改GET/POST请求参数,抓包修改数据

    python--playwright修改GET/POST请求参数,抓包修改数据,内含: 1、index.py主代码,演示完整的抓包修改数据demo 2、flaskServer.py服务端,用于返回传入的参数 运行顺序: 先运行:python flaskServer.py 然后再...

    python做get和post请求

    我们可以通过这些模块来构建GET和POST请求。 1. **urllib2模块**: - `urllib2.get()`:这个函数用于创建GET请求。例如,我们可以创建一个`Request`对象,然后使用`urlopen`打开它来获取响应。在提供的`urllib2Get...

    Android-一个python的网页postget以及上传图片的工具类

    总的来说,这个"Android-一个python的网页postget以及上传图片的工具类"提供了便捷的Python接口,帮助Android开发者更高效地进行网络通信,尤其是处理图片上传等复杂任务。通过合理地利用这样的工具,开发者可以将更...

    python项目练习-python3实现web服务器

    在本项目中,“python项目练习-python3实现web服务器”是一个基于Python 3的实践教程,旨在帮助学习者掌握如何利用Python构建一个简单的Web服务器。实验楼是一个在线学习平台,提供了这个项目的原始版本,而这里所述...

    libcurl往python简单服务器发送post请求json文件

    在这个场景中,我们关注的是如何使用libcurl库(一个强大的URL传输库)在C++中向一个用Python编写的简单服务器发送POST请求,同时携带JSON数据。让我们深入探讨这个过程中的关键知识点。 首先,我们要了解Python的...

    python爬虫实现POST request payload形式的请求

    在Python爬虫开发中,有时候我们需要模拟POST请求与服务器交互,获取特定的数据。在处理某些网站时,我们可能遇到POST请求需要使用`request payload`格式的情况。与常见的`form data`不同,`request payload`是一种...

    pythonget和post数据实现.pdf

    Python中的HTTP请求主要涉及到两个常见的方法:GET和POST,它们是Web交互中最基本的数据传递方式。...通过理解如何使用`urllib`库,我们可以更有效地与服务器进行数据交互,构建更复杂的网络应用程序。

    python爬虫请求—post

    Python爬虫技术是数据获取的重要手段,特别是在大数据时代,它被广泛应用于数据分析、网站信息抓取等领域。在Python中,`requests`库是进行HTTP请求的首选工具,它提供了简单易用的接口来发送GET、POST等不同类型的...

    Python进阶期末模拟卷(含参考答案)

    在本试卷中,涵盖了Python的基础语法、面向对象编程、文件操作、正则表达式、网络请求、数据可视化以及数据处理等多个核心知识点。 1. 正则表达式是Python中进行文本匹配和查找的强大工具。例如,题目中的"^(ab|b)+...

    python http服务器搭建

    http服务搭建 自己修改get post命令后服务器操作即可。

    pythonPost请求处理和get请求.zip

    总结,Python3中的HTTP请求处理主要依赖`requests`库,它提供了方便的接口用于发送GET和POST请求,以及处理其他HTTP方法。GET用于获取资源,POST用于提交数据。通过设置请求头和参数,我们可以自定义HTTP请求的细节...

    centos7离线安装pip3下载依赖包(python3开发环境离线搭建,功能扩展)

    在Linux系统,特别是CentOS 7中,搭建Python 3的开发环境对于许多开发者来说是一项基本任务。Python 3是一个强大的编程语言,广泛应用于Web开发、自动化脚本、数据分析等领域。而pip3是Python 3的包管理器,用于安装...

    python requests模块及依赖包.zip

    - **POST请求**:不仅可以GET数据,还可以POST数据,常用于提交表单或上传文件。 ```python data = {'key': 'value'} response = requests.post('http://www.example.com', data=data) ``` - **文件上传**:通过`...

    Python-aiohttp一个用于asyncio和Python的异步HTTP客户端服务器

    Python的aiohttp库是为Python的异步IO框架asyncio设计的一个强大的工具,它集成了HTTP客户端和服务器的功能,使得在Python中处理网络请求变得高效且简洁。这个库允许开发者在同一时间处理多个网络连接,极大地提高了...

    python-requests离线包

    Python的requests库是...总的来说,这个离线包提供了一个完整的解决方案,让你在没有网络的情况下也能在Python环境中安装和使用requests库,以及其相关的依赖库,这对于那些网络不稳定或者有安全限制的环境非常有用。

    python中get和post有什么区别

    在Python编程中,GET和POST是HTTP协议中最常用的两种请求方法,它们主要在发送数据到服务器时有不同的行为和用途。 1. 数据传输位置: - GET:数据通过URL(Uniform Resource Locator)作为查询字符串附加在URL...

    Python3 实现的HTTP服务端(server)和客户端(clients)通信

    客户端代码在`client.py`中,可能包括创建一个socket对象,连接到服务器,然后构造一个HTTP请求(如GET或POST)。对于GET请求,只需发送URL;对于POST请求,还需要添加请求体,通常包含要发送的数据。客户端还会接收...

Global site tag (gtag.js) - Google Analytics