Python使用requests提交HTTP表单

Python的requests库, 其口号是HTTP for humans,堪称最好用的HTTP库。

使用requests库,可以使用数行代码实现自动化的http操作。以http post,即浏览器提交一个表格数据到web服务器,为例,来说明requests的使用。

无cookie

import requests
url = 'www.test.org'
data = {'username': 'user', 'password': '123456'}
response = requests.post(url, data)
  • 1
  • 2
  • 3
  • 4

有cookie——显示添加cookie

import requests
url = 'www.test.org'
data = {'username': 'user', 'password': '123456'}
headers = {'Cookie': 'SshCAcaoCookie-6-2=qQOGw0eWu7vZiumIAezdJJEUL3w-'}
response = requests.post(url, data, headers=headers)
  • 1
  • 2
  • 3
  • 4
  • 5

有cookie——隐式添加cookie

import requests
url = 'www.test.org'
data = {'username': 'user', 'password': '123456'}
session = requests.Session()
session.get(url)
response = session.post(url, data,)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在调试以上脚本时,可以通过对比使用浏览器和使用Python脚本时的tcpdump文件,来定位问题。使用tcpdump抓包时,建议指定网卡和端口号抓包:

tcpdump -i network_interface_name port port_num -s 0 -w ./1.pcap