python发送带有标题的POST [英] python send POST with header
本文介绍了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屋!
查看全文