python发送带有标题的POST [英] python send POST with header

查看:144
本文介绍了python发送带有标题的POST的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试构建一个发送带有参数提取结果的POST的python脚本。
Whith小提琴手我提取了我希望返回的帖子请求。该网站仅使用https。



$ $ p $ POST / Services / GetFromDataBaseVersionned HTTP / 1.1
主机:www.mywbsite.fr
连接 :keep-alive,
Content-Length:129,
Origin:https://www.mywbsite.fr,
X-Requested-With :XMLHttpRequest,
User-Agent:Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 536.5(KHTML,像Gecko)Chrome / 19.0.1084.52 Safari / 536.5,
Content-Type:application / json,
Accept:* / *,
Referer:https://www.mywbsite.fr/data/mult.aspx ,
Accept-Encoding:gzip,deflate,sdch,
Accept-Language:fr-FR,fr; q = 0.8,en-US; q = 0.6,en; q = 0.4,
Accept-Charset:ISO-8859-1,utf-8; q = 0.7,*; q = 0.3,
Cookie:ASP.NET_SessionId = j1r1b2a2v2w245; GSFV = FirstVisit =; GSRef = https://www.google.fr/url?sa = t& rct = j& q =&esrc = s& source = web& cd = 1& ved = 0CHgQFjAA&url = https://www.mywbsite.fr/& ei = FZq_T4abNcak0QWZ0vnWCg& usg = AFQjCNHq90dwj5RiEfr1Pw; HelpRotatorCookie = HelpLayerWasSeen = 0; NSC_GSPOUGS!TTM = ffffffff09 f4f58455e445a4a423660; GS =位置= frfr; __utma = 1.219229010.1337956889.1337956889.1337958824.2; __utmb = 1.1.10.1337958824; __utmc = 1; __utmz = 1.1337956889.1.1.utmcsr = google | utmccn =(有机)| utmcmd =有机| utmctr =(不提供%20)

{isLeftColumn:false,lID: - 1, userIpCountryCode:FR,version:null,languageCode:fr,siteCode:frfr,Quotation:eu}
/ pre>

现在我的python脚本:

 #!/ usr / bin / env python 
# - * - coding:iso-8859-1 - * -
导入字符串
导入httplib
导入urllib2

host =www.mywbsite.fr/sport/multiplex.aspx
params ='isLeftColumn:false,liveID: - 1,userIpCountryCode:FR,version :null,languageCode:fr,siteCode:frfr,Quotation:eu'

headers = {Host:www.mywbsite.fr,
Connection:keep-alive,
Content-Length:129,
Origin:https://www.mywbsite.fr,
X用户代理:Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 536.5(KHTML,如Gecko)Chrome / 19.0.1084.52 Safari / 536.5,
Content-Type:applicati on / json,
Accept:* / *,
Referer:https://www.mywbsite.fr/data/mult.aspx,
Accept-Encoding:gzip,deflate,sdch,
Accept-Language:fr-FR,fr; q = 0.8,en-US; q = 0.6,en; q = 0.4,
Accept-Charset:ISO-8859-1,utf-8; q = 0.7,*; q = 0.3,
Cookie:ASP.NET_SessionId = j1r1b2a2v2w245; GSFV = FirstVisit =; ?GSRef = HTTPS://www.google.fr/url SA = T&安培; RCT = J&安培; Q =&安培; ESRC = S&安培;源=纸幅放大器; CD = 1&安培; VED = 0CHgQFjAA&安培; URL = https://开头万维网。 mywbsite.fr/&ei=FZq_T4abNcak0QWZ0vnWCg&usg=AFQjCNHq90dwj5RiEfr1Pw; HelpRotatorCookie = HelpLayerWasSeen = 0; NSC_GSPOUGS TTM = ffffffff09f4f58455e445a4a423660!; GS =位置= frfr; __utma = 1.219229010.1337956889.1337956889.1337958824.2; __utmb = 1.1.10.1337958824; __utmc = 1; __utmz = 1.1337956889.1.1.utmcsr = google | utmccn =(有机)| utmcmd =有机| utmctr =(不提供%20)

}

url =/ Services / GetFromDataBaseVersionned

#发送请求
conn = httplib.HTTPConnection(host,port = 443)
conn.request(POST,url,params,headers)
response = conn.getresponse()

data = response.read()
打印数据

但是当我运行我的脚本时,出现这个错误:

$ p $ socket.gaierror: [Errno -2]姓名或服务未知


解决方案

谢谢

 导入请求
请注意,这是完美的。 import json

url ='https://www.mywbsite.fr/Services/GetFromDataBaseVersionned'
payload = {
Host:www.mywbsite.fr,
Connection:keep-alive,
Content-Length:129,
Origin:https:// w ww.mywbsite.fr,
X-Requested-With:XMLHttpRequest,
User-Agent:Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 536.5(KHTML,如Gecko)Chrome / 19.0.1084.52 Safari / 536.5,
Content-Type:application / json,
Accept:* / * ,
Referer:https://www.mywbsite.fr/data/mult.aspx,
Accept-Encoding:gzip,deflate,sdch,
Accept-Language:fr-FR,fr; q = 0.8,en-US; q = 0.6,en; q = 0.4,
Accept-Charset:ISO-8859-1,utf- 8; q = 0.7,*; q = 0.3,
Cookie:ASP.NET_SessionId = j1r1b2a2v2w245; GSFV = FirstVisit =; ?GSRef = HTTPS://www.google.fr/url SA = T&安培; RCT = J&安培; Q =&安培; ESRC = S&安培;源=纸幅放大器; CD = 1&安培; VED = 0CHgQFjAA&安培; URL = https://开头万维网。 mywbsite.fr/&ei=FZq_T4abNcak0QWZ0vnWCg&usg=AFQjCNHq90dwj5RiEfr1Pw; HelpRotatorCookie = HelpLayerWasSeen = 0; NSC_GSPOUGS TTM = ffffffff09f4f58455e445a4a423660!; GS =位置= frfr; __utma = 1.219229010.1337956889.1337956889.1337958824.2; __utmb = 1.1.10.1337958824; __utmc = 1; __utmz = 1.1337956889.1.1.utmcsr = google | utmccn =(有机)| utmcmd = organic | utmctr =(不是%20提供)
}
#在有效载荷$ b中发送空头作为参数$ b headers = {}
r = requests.post(url,data = json.dumps(payload),headers = headers)
print(r.content)


I try to build a python script who sends a POST with parameters for extracting the result. Whith fiddler I have extract the post request who return that I want. The website use https only.

POST /Services/GetFromDataBaseVersionned HTTP/1.1
Host: www.mywbsite.fr
"Connection": "keep-alive",
"Content-Length": 129,
"Origin": "https://www.mywbsite.fr",
"X-Requested-With": "XMLHttpRequest",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.52 Safari/536.5",
"Content-Type": "application/json",
"Accept": "*/*",
"Referer": "https://www.mywbsite.fr/data/mult.aspx",
"Accept-Encoding": "gzip,deflate,sdch",
"Accept-Language": "fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4",
"Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.3",
"Cookie": "ASP.NET_SessionId=j1r1b2a2v2w245; GSFV=FirstVisit=; GSRef=https://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CHgQFjAA&url=https://www.mywbsite.fr/&ei=FZq_T4abNcak0QWZ0vnWCg&usg=AFQjCNHq90dwj5RiEfr1Pw; HelpRotatorCookie=HelpLayerWasSeen=0; NSC_GSPOUGS!TTM=ffffffff09f4f58455e445a4a423660; GS=Site=frfr; __utma=1.219229010.1337956889.1337956889.1337958824.2; __utmb=1.1.10.1337958824; __utmc=1; __utmz=1.1337956889.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided)"

{"isLeftColumn":false,"lID":-1,"userIpCountryCode":"FR","version":null,"languageCode":"fr","siteCode":"frfr","Quotation":"eu"}

And now my python script:

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
import string
import httplib
import urllib2

host = "www.mywbsite.fr/sport/multiplex.aspx"
    params='"isLeftColumn":"false","liveID":"-1","userIpCountryCode":"FR","version":"null","languageCode":"fr","siteCode":"frfr","Quotation":"eu"'

headers = { Host: www.mywbsite.fr,
"Connection": "keep-alive",
"Content-Length": 129,
"Origin": "https://www.mywbsite.fr",
"X-Requested-With": "XMLHttpRequest",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.52 Safari/536.5",
"Content-Type": "application/json",
"Accept": "*/*",
"Referer": "https://www.mywbsite.fr/data/mult.aspx",
"Accept-Encoding": "gzip,deflate,sdch",
"Accept-Language": "fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4",
"Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.3",
"Cookie": "ASP.NET_SessionId=j1r1b2a2v2w245; GSFV=FirstVisit=;     GSRef=https://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CHgQFjAA&url=https://www.mywbsite.fr/&ei=FZq_T4abNcak0QWZ0vnWCg&usg=AFQjCNHq90dwj5RiEfr1Pw; HelpRotatorCookie=HelpLayerWasSeen=0; NSC_GSPOUGS!TTM=ffffffff09f4f58455e445a4a423660; GS=Site=frfr; __utma=1.219229010.1337956889.1337956889.1337958824.2; __utmb=1.1.10.1337958824; __utmc=1; __utmz=1.1337956889.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided)"

}

url = "/Services/GetFromDataBaseVersionned"

# POST the request
conn = httplib.HTTPConnection(host,port=443)
conn.request("POST",url,params,headers)
response = conn.getresponse()

data = response.read()
print data

But when I run my script, I have this error:

socket.gaierror: [Errno -2] Name or service not known

解决方案

Thanks alot for your link for the requests module. It's just perfect. Below the solution at my problem.

import requests
import json

url = 'https://www.mywbsite.fr/Services/GetFromDataBaseVersionned'
payload = {
    "Host": "www.mywbsite.fr",
    "Connection": "keep-alive",
    "Content-Length": 129,
    "Origin": "https://www.mywbsite.fr",
    "X-Requested-With": "XMLHttpRequest",
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.52 Safari/536.5",
    "Content-Type": "application/json",
    "Accept": "*/*",
    "Referer": "https://www.mywbsite.fr/data/mult.aspx",
    "Accept-Encoding": "gzip,deflate,sdch",
    "Accept-Language": "fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4",
    "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.3",
    "Cookie": "ASP.NET_SessionId=j1r1b2a2v2w245; GSFV=FirstVisit=; GSRef=https://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CHgQFjAA&url=https://www.mywbsite.fr/&ei=FZq_T4abNcak0QWZ0vnWCg&usg=AFQjCNHq90dwj5RiEfr1Pw; HelpRotatorCookie=HelpLayerWasSeen=0; NSC_GSPOUGS!TTM=ffffffff09f4f58455e445a4a423660; GS=Site=frfr; __utma=1.219229010.1337956889.1337956889.1337958824.2; __utmb=1.1.10.1337958824; __utmc=1; __utmz=1.1337956889.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided)"
}
# Adding empty header as parameters are being sent in payload
headers = {}
r = requests.post(url, data=json.dumps(payload), headers=headers)
print(r.content)

这篇关于python发送带有标题的POST的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆