Python 中的POST/GET包构建以及随机字符串的生成

现在,我们来用python,创建get包和post包。

至于有什么用处,大家慢慢体会。

Python 中包含了大量的库,作为一门新兴的语言,Python 对HTTP有足够强大的支持。

现在,我们引入新的库 httplib 以及 urllib

这两个库根据名称,我们可以知道他们是对于HTTP以及URL的操作。

立即学习“Python免费学习笔记(深入)”;

首先我们先要与服务器建立连接。(我们以某微博作为例子实现下文的各种功能)

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)

>>> random.randint(10,20)

>>> 15

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

from random import Randomdef 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 nowstart = now()finish = now()run_time = finish - startprint run_time

登录后复制

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2284530.html

(0)
上一篇 2025年2月27日 20:47:18
下一篇 2025年2月23日 16:22:43

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • python性能测试脚本

    import httplibimport urllibimport timeimport json  class Transaction(object):              def __init__(self):        se…

    编程技术 2025年2月27日
    200
  • python多线程编程5

    互斥锁是最简单的线程同步机制,python提供的condition对象提供了对复杂线程同步问题的支持。condition被称为条件变量,除了提供与lock类似的acquire和release方法外,还提供了wait和notify方法。线程首…

    编程技术 2025年2月27日
    200
  • python获得本机硬件信息

    注意:这段代码需要wmi  和 系统 win32 扩展支持。 没安装库的要先下载安装,我装的是 WMI-1.4.6.win32 和 pywin32-218.win32-py2.7 还有,代码里面文件目录自己修改下咯。 # -*- codin…

    2025年2月27日
    200
  • python多线程编程3: 使用互斥锁同步线程

    问题的提出 上一节的例子中,每个线程互相独立,相互之间没有任何关系。现在假设这样一个例子:有一个全局的计数num,每个线程获取这个全局的计数,根据num进行一些处理,然后将num加1。很容易写出这样的代码: # encoding: UTF-…

    编程技术 2025年2月27日
    200
  • Python多线程抓取Google搜索链接网页

    1)urllib2+beautifulsoup抓取goolge搜索链接 近期,参与的项目需要对Google搜索结果进行处理,之前学习了Python处理网页相关的工具。实际应用中,使用了urllib2和beautifulsoup来进行网页的抓…

    2025年2月27日
    200
  • 计算机语言有哪三类

    计算机语言分为三类:1. 机器语言:二进制代码,直接与硬件交互,难以理解和编程。2. 汇编语言:使用助记符代码,比机器语言易于理解,但仍需对硬件架构有深入了解。3. 高级语言:使用人类可读的语法,独立于硬件架构,便于开发和维护应用程序。常见…

    2025年2月27日
    200
  • 计算机语言入门先学什么

    对于计算机语言入门初学者,首先需要掌握计算机基础、算法和数据结构,然后选择一种入门级编程语言,如 Python、Java 或 C++,并系统学习其语法和基本概念。 计算机语言入门先学什么? 对于初学者来说,学习计算机语言入门时,首先需要掌握…

    2025年2月27日
    100
  • python多线程编程2

    如上一节,python的threading.thread类有一个run方法,用于定义线程的功能函数,可以在自己的线程类中覆盖该方法。而创建自己的线程实例后,通过thread类的start方法,可以启动该线程,交给python虚拟机进行调度,…

    编程技术 2025年2月27日
    200
  • python多线程编程1

    多线程编程必须理解的一些基本概念,适用于所有编程语言。内容: 并发式编程 多任务操作系统 多线程vs多进程 线程安全 立即学习“Python免费学习笔记(深入)”; 线程的生命周期 线程的类型 并发式编程 不同的编程范式对软件有不同的视角。…

    编程技术 2025年2月27日
    200
  • 使用Python读取和写入mp3文件的id3v1信息

    1.起因 一直以来疯迷“冬吴相对论”,为了整理下载他的MP3花了不少功夫,今天突然发现将电脑中的mp3导入到itunes后,文件名竟然不识别了。#_* itunes自动识别了mp3的信息内容。多次一举么,文件名挺好。事实如此,让我深感不完美…

    编程技术 2025年2月27日
    200

发表回复

登录后才能评论