用Python向网站发出Post/Get请求

以朋友的web作业网站为例:

http://simpledating.sinaapp.com/

使用标准库中的urllib2可以对网页进行访问

GET:

先看看正常发出的GET请求:

代码如下:

#coding:utf-8
import urllib2
# 打开Debug Log 方便调试
httpHandler = urllib2.HTTPHandler(debuglevel=1)
httpsHandler = urllib2.HTTPSHandler(debuglevel=1)
opener = urllib2.build_opener(httpHandler, httpsHandler)
urllib2.install_opener(opener)

try:
    header = {
        ‘Accept‘:‘*/*‘,
        ‘Accept-Language‘:‘zh-CN,zh;q=0.8‘,
        ‘Connection‘:‘keep-alive‘,
        ‘Host‘:‘simpledating.sinaapp.com‘,
        ‘Origin‘:‘http://simpledating.sinaapp.com‘,
        ‘Referer‘:‘http://simpledating.sinaapp.com/‘,
        ‘User-Agent‘:‘Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 SE 2.X MetaSr 1.0‘,
    }
    #添加header
    req = urllib2.Request(
                    url = ‘http://simpledating.sinaapp.com/‘,
                    headers = header
                )
    response = urllib2.urlopen(req)
    print response.read()
except urllib2.HTTPError, e:
        print ‘error‘, e.code


返回:

D:\Python\python.exe D:/Users/Administrator/PycharmProjects/web/get.py

send: ‘GET / HTTP/1.1\r\nAccept-Encoding: identity\r\nOrigin: http://simpledating.sinaapp.com\r\nAccept-Language: zh-CN,zh;q=0.8\r\nConnection: close\r\nAccept: */*\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 SE 2.X MetaSr 1.0\r\nHost:
simpledating.sinaapp.com\r\nReferer: http://simpledating.sinaapp.com/\r\n\r\n‘

reply: ‘HTTP/1.1 200 OK\r\n‘

header: Server: nginx/1.4.4

header: Date: Mon, 12 Jan 2015 06:22:26 GMT

header: Content-Type: text/html; charset=UTF-8

header: Content-Length: 12559

header: Connection: close

header: Etag: "1688e856917006e409c1932e75e871bf53b2315c"

header: via: yq34.pyruntime

header: Set-Cookie: saeut=CkMPIlSzaCIY9kkJCYxEAg==; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

...



POST:

先看看正常发出的post请求:

可易看到post数据格式是有三个,哦这个网站还加了xsrf(跨站请求伪造),防止伪造的请求..

那我只好在请求data和cookies也伪造下吧

代码如下:

#coding:utf-8
import urllib
import urllib2

# 打开Debug Log 方便调试
httpHandler = urllib2.HTTPHandler(debuglevel=1)
httpsHandler = urllib2.HTTPSHandler(debuglevel=1)
opener = urllib2.build_opener(httpHandler, httpsHandler)
urllib2.install_opener(opener)

try:
    #data是要提交的数据 按照他要求的格式填
    data =  {u‘_xsrf‘:u‘f65fb8fdd4134e1f815c7a10f37561f6‘,u‘place‘:u‘~‘, u‘content‘:u‘asdwqwt‘, u‘time‘:u‘9999/99/99 ab:cd‘}
    data = urllib.urlencode(data)
    header = {
        ‘Accept‘:‘*/*‘,
        # ‘Accept-Encoding‘:‘gzip,deflate,sdch‘,
        ‘Accept-Language‘:‘zh-CN,zh;q=0.8‘,
        ‘Connection‘:‘keep-alive‘,
        ‘Cookie‘:‘saeut=CkMPGlSn3wdyh1mEHBWpAg==; user=eGlvbmdiaWFv|1421041643|f368e242dd53c65621ee754688042ae8898c572b;_xsrf=f65fb8fdd4134e1f815c7a10f37561f6‘,
        ‘Host‘:‘simpledating.sinaapp.com‘,
        ‘Origin‘:‘http://simpledating.sinaapp.com‘,
        ‘Referer‘:‘http://simpledating.sinaapp.com/createBroadDating‘,
        ‘User-Agent‘:‘Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 SE 2.X MetaSr 1.0‘,
        # post要加入的:
        ‘Content-Type‘:‘application/x-www-form-urlencoded; charset=UTF-8‘,
        ‘Content-Length‘:‘92‘,
        ‘X-Requested-With‘:‘XMLHttpRequest‘,
    }
    req = urllib2.Request(
                    url = ‘http://simpledating.sinaapp.com/createBroadDating‘,
                    data = data,
                    headers = header
                )
    response = urllib2.urlopen(req)
    print response.read()
except urllib2.HTTPError, e:
        print ‘error‘, e.code

返回结果如下:

D:\Python\python.exe D:/Users/Administrator/PycharmProjects/web/web.py

send: ‘POST /createBroadDating HTTP/1.1\r\nAccept-Encoding: identity\r\nOrigin: http://simpledating.sinaapp.com\r\nContent-Length: 92\r\nAccept-Language: zh-CN,zh;q=0.8\r\nConnection: close\r\nAccept: */*\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 SE
2.X MetaSr 1.0\r\nHost: simpledating.sinaapp.com\r\nX-Requested-With: XMLHttpRequest\r\nCookie: saeut=CkMPGlSn3wdyh1mEHBWpAg==; user=eGlvbmdiaWFv|1421041643|f368e242dd53c65621ee754688042ae8898c572b;_xsrf=f65fb8fdd4134e1f815c7a10f37561f6\r\nReferer:http://simpledating.sinaapp.com/createBroadDating\r\nContent-Type:
application/x-www-form-urlencoded; charset=UTF-8\r\n\r\ncontent=asdwqwt&_xsrf=f65fb8fdd4134e1f815c7a10f37561f6&place=%7E&time=9999%2F99%2F99+ab%3Acd‘

reply: ‘HTTP/1.1 200 OK\r\n‘

header: Server: nginx/1.4.4

header: Date: Mon, 12 Jan 2015 06:49:43 GMT

header: Content-Type: text/html; charset=UTF-8

header: Content-Length: 7

header: Connection: close

header: via: yq34.pyruntime

success

可见post成功了



时间: 2024-10-09 18:32:11

用Python向网站发出Post/Get请求的相关文章

Python网络编程小例子:使用python获取网站域名信息

Whois简介 whois(读作"Who is",非缩写)是用来查询域名的IP以及所有者等信息的传输协议.简单说,whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人.域名注册商).通过whois来实现对域名信息的查询.早期的whois查询多以命令列接口存在,但是现在出现了一些网页接口简化的线上查询工具,可以一次向不同的数据库查询.网页接口的查询工具仍然依赖whois协议向服务器发送查询请求,命令列接口的工具仍然被系统管理员广泛使用.whois通常

Python识别网站验证码

http://drops.wooyun.org/tips/6313 Python识别网站验证码 Manning · 2015/05/28 10:57 0x00 识别涉及技术 验证码识别涉及很多方面的内容.入手难度大,但是入手后,可拓展性又非常广泛,可玩性极强,成就感也很足. 验证码图像处理 验证码图像识别技术主要是操作图片内的像素点,通过对图片的像素点进行一系列的操作,最后输出验证码图像内的每个字符的文本矩阵. 读取图片 图片降噪 图片切割 图像文本输出 验证字符识别 验证码内的字符识别主要以机

Python 通过网站search功能监控网站内容更新

更多信息访问个人博客: http://cloudbps.com 接到需求帮朋友监控一个信息网站,当该网站有相关的数据更新的时候发送信息到指定邮箱.下面是相关的python脚本,用到了httplib, time , sys ,smtplib模块 #!/usr/bin/env python#coding=utf8import httplib, time import sys import smtplib reload(sys) sys.setdefaultencoding('utf8') from

python解决网站的反爬虫策略

网站的反爬虫策略: 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分.这里我们只讨论数据采集部分. 一般网站从三个方面反爬虫:用户请求的Headers,用户行为,网站目录和数据加载方式.前两种比较容易遇到,大多数网站都从这些角度来反爬虫.第三种一些应用ajax的网站会采用,这样增大了爬取的难度(防止静态爬虫使用ajax技术动态加载页面). 1.从用户请求的Headers反爬虫是最常见的反爬虫策略. 伪装header.很多网站都会对Headers的User-Agent进行检测,还有一部分网站

python -- 常用网站

1.Python Extension Packages for Windows - Christoph Gohlke http://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载Python插件非常方便 2.http://pypi.v2ex.com/simple/?allow_list_dir=1 插件也不少,但是很多没链接 python -- 常用网站,布布扣,bubuko.com

Challenge Checkio(python)—初尝python练习网站

最近在找点python语言练习的网站,发现这个网站不错 http://www.checkio.org/ 页面设计的也比较漂亮,比较适合学习python的语法知识.不过注册这个网站 开始就得解决一个python问题,不过很简单. 1 #python3.3 is inside 2 def checkio(els): 3 return els 4 5 if checkio([1, 2, 3, 4, 5, 6]) == 6: 6 print('Done!') 对上面的代码 修改checkio中的函数 函

Python学习网站

python学习网站 http://www.cnblogs.com/vamei/tag/Python/default.html?page=1 http://www.runoob.com/python/python-tutorial.html hhttp://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000

Python监控网站接口值

Python监控网站接口值: #!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'liudong' import urllib,sys,urllib2,json,smtplib from email.mime.text import MIMEText mailto_list=['邮箱'] mail_host="smtp.philisense.com" mail_user="邮箱" mail_pass

Python搭建网站框架

1. 机器上安装python 省略 2. 机器上安装python的easy_install 下载一个ez_setup.py文件 进入该文件路径下,运行该文件:运行结束后,文件下<python路径>\Scripts多了easy_install.exe 将这个exe文件的路径加入环境变量path下,这个时候在任何情况下都可以使用easy_install解析python框架了 3. 在你的web框架下,使用easy_install安装你的frame框架. 运行结束frame框架就安装在你的机器上了.