都是几年前用过的,现在翻出来记录一下。

  1. import httplib
  2. import urllib2
  3. import socket
  4.  
  5. ##--------------------------------------------------------用httplib进行GET请求
  6. conn=httplib.HTTPConnection('172.22.31.40',8080)##如果要走代理,那这里自然要改为代理服务器的地址
  7. conn.request("GET","/cloud/index.php")
  8. result=conn.getresponse()
  9. print result.read()
  10. resultStatus=result.status
  11. print resultStatus
  12. conn.close()
  13.  
  14. conn=httplib.HTTPConnection('www.cnblogs.com',80)
  15. conn.request("GET","/idbeta/default.html")
  16. result=conn.getresponse()
  17. print result.read()
  18. resultStatus=result.status
  19. print resultStatus
  20. conn.close()
  21.  
  22. ##--------------------------------------------------------用httplib进行POST请求
  23. conn=httplib.HTTPConnection('172.22.131.40',80)
  24. ##一般重点关注真实包的"Content-type",例如"application/x-www-form-urlencoded"等;而data则根据真实抓包情况来模拟,需要url编码的用urllib.urlencode
  25. header1 = {"Content-type": "application/x-www-form-urlencoded", "User-Agent" : "test"}
  26. data1 = '''{
  27. "audit_control_list" : [],
  28. "ws" : [
  29. "base_setting",
  30. ],
  31. "xp_fix" : []
  32. } '''
  33. url1='/api/getconf.json?mid=ebcd32d5f68e404db1ccc8ff2dacb360&ver=1.0'
  34. conn.request('POST',url1,body=data1,headers=header1)
  35. result=conn.getresponse()
  36. content=result.read()
  37. print content
  38. conn.close()
  39.  
  40. ##发送multipart/form-data请求的例子
  41. conn=httplib.HTTPConnection('172.22.131.40',80)
  42. header2={"Content-Type":"multipart/form-data; boundary=----------------------------2bb6caed7d98"}
  43. data2 = '''------------------------------2bb6caed7d98
  44. Content-Disposition: form-data; name="em"
  45. md5s=92f44e405db16ac55d97e3bfe3b132fa+04c5d2b4da9a0f3fa8a45702d4256cee42d8c48d 452608 \WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe 1
  46. dcca4b04af87e52ef9eaa2190e06cbac+12a602b86fc394b1c88348fb099685eabb876495 1174016 \PROGRAM FILES\windows sidebar\sidebar.exe 1
  47. ------------------------------2bb6caed7d98--
  48. '''
  49. url2='/cloudquery.php'
  50. conn.request("POST",url2,body=data2,headers=header2)
  51. result=conn.getresponse()
  52. resultStatus=result.status
  53. ##获取请求的页面内容
  54. content=result.read()
  55. print content
  56. print result.status,result.reason
  57. ##关闭连接
  58. conn.close()
  59.  
  60. ##--------------------------------------------------------用urllib2进行GET请求
  61. ##直接open就是GET
  62. url="http://www.cnblogs.com/idbeta/default.html"
  63. response =urllib2.urlopen(url)
  64. print response.read()
  65. ##--------------------------------------------------------用urllib2进行POST请求
  66. url="http://172.22.131.40/api/getconf.json?mid=ebcd32d5f68e404db1ccc8ff2dacb360&ver=1.0"
  67. header1 = {"Content-type": "application/x-www-form-urlencoded", "User-Agent" : "test"}
  68. data1 = '''{
  69. "audit_control_list" : [],
  70. "base_config" : [],
  71. "data_linkage" : [],
  72. "md" : [],
  73. "nac_linkage" : [],
  74. "neteye" : [],
  75. "p2p_setting" : [],
  76. "safe_control_list" : [],
  77. "sd" : [ "sd_settings", "rp_settings" ],
  78. "ui" : [],
  79. "ws" : [
  80. "base_setting",
  81. "popwnd_setting",
  82. "startup_assistant",
  83. "safe_protect",
  84. "leak_repair"
  85. ],
  86. "xp_fix" : []
  87. } '''
  88. req = urllib2.Request(url, data1, header1) # 发送请求同时传data表单,这个是字典方式
  89. response = urllib2.urlopen(req) #接受反馈的信息
  90. the_page = response.read() #读取反馈的内容
  91. print the_page
  92.  
  93. ##--------------------------------------------------------urllib2设置超时时间
  94. ##方法一 全局设置
  95. socket.setdefaulttimeout(1);秒
  96. ##或
  97. urllib2.socket.setdefaulttimeout(1)
  98. ##方法二 urllib2.urlopen加入timeout参数
  99. urllib2.urlopen(url,timeout=1)
  100. ##--------------------------------------------------------urllib2设置代理
  101. proxy = urllib2.ProxyHandler({"http" : 'http://172.22.31.85:808'})
  102. urllib2.install_opener(urllib2.build_opener(proxy))
  103. url="http://www.cnblogs.com/idbeta/default.html"
  104. response =urllib2.urlopen(url)
  105. print response.read()

  除了上面所说的,还有httplib2、pycurl、requests等等都是和http相关的,用法大同小异,大家去各自官网看介绍就可以了,可见python的第三方库实在有点太多了啊。

httplib和urllib2常用方法的更多相关文章

  1. httplib urllib urllib2 pycurl 比较

    最近网上面试看到了有关这方面的问题,由于近两个月这些库或多或少都用过,现在根据自己的经验和网上介绍来总结一下. httplib 实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更 ...

  2. Urllib2 总结

    Urllib2 总结 介绍 Urllib2是用于获取URLs(统一资源定位符)的一个Python模块.它以urlopen函数的形式提供了非常简单的接口.能够使用各种不同的协议来获取网址.它还提供一个稍 ...

  3. Python2中的urllib、urllib2和 Python3中的urllib、requests

    目录 Python2.x中 urllib和urllib2 常用方法和类 Python3.x中 urllib requests Python2.x中 urllib和urllib2 urllib 和 ur ...

  4. Linux内核补丁批量自动下载工具

    Linux kernel官网cgit工具不支持按变更代码进行补丁搜索,想到个办法就是把补丁都抓下来,这样可以在本地搜索.花了2个小时写了个小工具,话不多说,直接看效果: E:\docs\TOOLS\p ...

  5. ZTE and TP-Link RomPager - DoS Exploit

    #!/usr/bin/env python # -*- coding: utf-8 -*- # Exploit Title: ZTE and TP-Link RomPager DoS Exploit ...

  6. 用 python 实现一个多线程网页下载器

    今天上来分享一下昨天实现的一个多线程网页下载器. 这是一个有着真实需求的实现,我的用途是拿它来通过 HTTP 方式向服务器提交游戏数据.把它放上来也是想大家帮忙挑刺,找找 bug,让它工作得更好. k ...

  7. Python爬虫:一些常用的爬虫技巧总结

    爬虫在开发过程中也有很多复用的过程,这里总结一下,以后也能省些事情. 1.基本抓取网页 get方法 import urllib2 url = "http://www.baidu.com&qu ...

  8. 常用的 Python 爬虫技巧总结

    用python也差不多一年多了,python应用最多的场景还是web快速开发.爬虫.自动化运维:写过简单网站.写过自动发帖脚本.写过收发邮件脚本.写过简单验证码识别脚本. 爬虫在开发过程中也有很多复用 ...

  9. Python高频技巧总结[基础篇]

    0. 概要说明 python应用最多的场景还是web快速开发.爬虫.自动化运维:简单网站.自动Fuzz脚本.收发邮件脚本.简单验证码识别脚本. 爬虫在开发过程中也有很多复用的过程,这里总结一下,以后也 ...

随机推荐

  1. raycast 一小段距离碰撞到的poly

    dtNavMeshQuery::raycast(dtPolyRef startRef, const float* startPos, const float* endPos, const dtQuer ...

  2. 使用 JProbe 调试 Linux 内核(转)

    https://liam.page/2018/04/28/debug-in-Linux-kernel-jprobe/

  3. mysql千万级数据量查询出所有重复的记录

    查询重复的字段需要创建索引,多个条件则创建组合索引,各个条件的索引都存在则不必须创建组合索引 有些情况直接使用GROUP BY HAVING则能直接解决:但是有些情况下查询缓慢,则需要使用下面其他的方 ...

  4. MFC全屏显示和多窗口动态显示的一些技巧和方法

    一.全屏 1.全屏窗口从dialogex继承,因为要处理一些东西 2.全屏代码,这样设置后尺寸不会出bug,只设置为最大值的话容易出bug //get current system resolutio ...

  5. TypeScript初探

    TypeScript初探 TypeScript什么? 官方给的定义:TypeScript是一种由微软开发的自由和开源的编程语言,它是JavaScript类型的超集,可以编译成纯JavaScript,本 ...

  6. vue项目打包之后js文件过大怎么办?

  7. Scala中 zip或者zipWithIndex的用法

    问题:你要遍历一个有序集合,同时你又想访问一个循环计数器,但最重要的是你真的不需要手动创建这个计数器.解决方案:    使用zipWithIndex或者zip方法来自动地创建一个计数器,假设你有一个有 ...

  8. Shell脚本创建的文件夹末尾有两个问号怎么回事?

    原因:Linux系统的换行符是"\r\n",Windows上的换行符是"\n",Windows上编写shell脚本上传Linux,Linux无法正确识别&quo ...

  9. 对int类型的数据,如何让获取长度

    下面为大家写一个列子   int a = 124;<br> Integer a1 = a;//转换为包装类Integer<br> System.out.println(a1.t ...

  10. ArrayList 和 LinkList 的区别

    ArrayList 的相关知识 public class ArrayList<E> extends AbstractList<E>implements List<E> ...