2017-01-07 64 views
0

我有一个应用程序,我在我的手机上发送帖子请求并获取一些信息。我试图模仿来自Python脚本的发布请求,并获取相同的响应。在Python中模仿发布请求

我用了一个数据包嗅探器,看看该请求是什么:

POST /b/ss/wdgwespmaflm/0/JAVA-4.10.0-AN/s23376784 HTTP/1.1 
connection: close 
Content-Type: application/x-www-form-urlencoded 
User-Agent: Mozilla/5.0 (Linux; U; Android 5.1; en-US; HTC One_M8 Build/LMY47O.H4) 
Accept-Language: en-US 
Content-Length: 530 
Host: w88.espn.com 
Accept-Encoding: gzip 

ndh=1&ce=UTF-8&vid=5f2c4950ca6e9359&pev2=ADBINTERNAL%3ALifecycle&c.&a.&DaysSinceFirstUse=52&RunMode=Application&HourOfDay=12&Resolution=1080x1776&DaysSinceLastUse=0&CarrierName=Partner&AppID=ESPN%20Fantasy%205.1.1%20%28155%29&TimeSinceLaunch=3&OSVersion=Android%205.1&PrevSessionLength=17&Launches=73&DeviceName=HTC%20One_M8&DayOfWeek=7&LaunchEvent=LaunchEvent&internalaction=Lifecycle&.a&.c&t=00%2F00%2F0000%2000%3A00%3A00%200%20-120&mid=61999711066602377445137974387884905365&pe=lnk_o&pageName=ESPN%20Fantasy%205.1.1%20%28155%29 

我使用的模块requests,我想这

r = requests.post("http://w88.espn.com/b/ss/wdgwespmaflm/0/JAVA-4.10.0-AN/s23376784", headers={ 
    'connection': 'close', 
    'Content-Type': 'application/x-www-form-urlencoded', 
    'User-Agent': 'Mozilla/5.0 (Linux; U; Android 5.1; en-US; HTC One_M8 Build/LMY47O.H4)', 
    'Accept-Language': 'en-US', 
    'Content-Length': '530', 
    'Host': 'w88.espn.com', 
    'Accept-Encoding': 'gzip'}) 

但脚本只是被卡住的要求。我在哪里发送内容? 我是不是应该把它作为headers发送?我试过data,它也没有工作。

有什么想法?

+0

首先,您的网址是不是完成“/b/ss/wdgwespmaflm/0/JAVA-4.10.0-AN/s23376784”,缺少协议和主机。 –

+0

使用'http:// w88.espn.com/b/ss/wdgwespmaflm/0/JAVA-4.10.0-AN/s23376784'作为'URL' – Andersson

+0

嗯好吧,我会试试 – Mumfordwiz

回答

0

据我所知,你的数据包嗅探器的最后一行是你应该传递给服务器的参数。尽量串联schema + host + resource locator + parameters

url = http://www.w88.espn.com/b/ss/wdgwespmaflm/0/JAVA-4.10.0-AN/s23376784?ndh=1&ce=UTF-8&vid=5f2c4950ca6e9359&pev2=ADBINTERNAL%3ALifecycle&c.&a.&DaysSinceFirstUse=52&RunMode=Application&HourOfDay=12&Resolution=1080x1776&DaysSinceLastUse=0&CarrierName=Partner&AppID=ESPN%20Fantasy%205.1.1%20%28155%29&TimeSinceLaunch=3&OSVersion=Android%205.1&PrevSessionLength=17&Launches=73&DeviceName=HTC%20One_M8&DayOfWeek=7&LaunchEvent=LaunchEvent&internalaction=Lifecycle&.a&.c&t=00%2F00%2F0000%2000%3A00%3A00%200%20-120&mid=61999711066602377445137974387884905365&pe=lnk_o&pageName=ESPN%20Fantasy%205.1.1%20%28155%29 

或添加这些参数作为params参数:

params = {'ndh': '1', 
      'ce': 'UTF-8', 
      'vid': '5f2c4950ca6e9359', ...} 

,并把您的要求为

r = requests.post(url, params=params, headers=headers) 
+0

尝试在所有方面..将无法正常工作..感谢您的帮助! – Mumfordwiz

+0

本网站是否需要授权才能执行您的请求? – Andersson

+0

我不这么认为,这是嗅探器从这个应用程序记录的第一个数据包。 – Mumfordwiz