包服务器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说"程序员的未来就是榨取程序员"
这个程序员对这个未来不满意,于是他又去问上帝。
"万能的上帝呀,请你告诉我,我的未来会怎样?"
上帝说"我的孩子,你去问侯捷,他写的计算机书的读者可能是地球上最多的"
于是他去问侯捷。
侯捷说"程序员的未来就是诱惑程序员"
这个程序员对这个未来不满意,于是他又去问上帝。
"万能的上帝呀,请你告诉我,我的未来会怎样?"
上帝摇摇头"唉,我的孩子,你还是别当程序员了")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值