我希望向dwr服务器发送请求,其中包含一些有效负载日期:
callCount=1
c0-scriptName=Manager
c0-id=3992_1389451476736
c0-param1=string:
c0-param15=string:
c0-param16=string:-1
c0-param17=string:1
xml=true
我使用请求python我的第一个问题是我不知道什么样的数据接受dwr(字符串,json或...)我的代码是
url = 'https://example.com/Manage.dwr'
headers = {
}
data = 'callCount=1c0-scriptName=MMTPManagerc0-methodName=saveMMTPOrderc0-id=7140_1389449863325c0-param0=string:072CD0A2FE4DAD0450457485587ADB5Cc0-param1=string:c0-param2=string:IRO1MAPN0001c0-param3=string:12190060428937%20%20c0-param4=string:Ac0-param5=string:20000c0-param6=string:0c0-param7=string:c0-param8=string:12913c0-param9=string:Lc0-param10=string:Jc0-param11=string:c0-param12=number:758944325c0-param13=string:2c0-param14=number:1389448044227c0-param15=string:c0-param16=string:-1c0-param17=string:1xml=true'
def req():
r = requests.post(url, data=data, headers=headers)
print r.text
print r.headers
req()
并且回复是
//<script type='text/javascript'>
alert('Error. This may be due to an unsupported browser.\nSee the mailing lists at http://www.getahead.ltd.uk/dwr/ for more information.');
//</script>
为每一个想法和帮助感恩 感谢
答案 0 :(得分:2)
之前从未听说过dwr
,我快速查看了Direct Web Remoting网站。由于它看起来需要在客户端上理解JavaScript的东西,所以不能单独使用请求。
请求不会对网页内容进行任何处理。由于请求不会为您处理JavaScript,因此您需要使用更像selenium(在python中具有绑定)的内容。
混合使用硒这样的东西,您可能需要将请求中的User-Agent
标题更改为看起来像真实浏览器的标题。您的请求如下:
r = requests.post(url, data=data, headers={'User-Agent': '<browser user agent>'}
其中'<browser user agent>'
是从浏览器中获取的字符串。可能有效的示例可以是
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0
或
Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36