我试图将弹出表单的数据发布到本地网站。为了做到这一点,我模拟了请求头和数据以及网站提供的cookie信息。(注意:我主要是从代码中修改我的电子邮件和密码(出于明显的原因),但所有其他代码将保持不变。)
我尝试过cookie、header、requests、data等的多种组合,另外,我在网络检查器中验证了cookie以及预期的头和数据。我可以使用requests' sample code轻松设置cookie。我无法解释为什么我的代码在一个实时站点上不起作用,我将非常感谢任何帮助。有关详细信息,请参阅以下代码。在
import requests
import robobrowser
import json
br = robobrowser.RoboBrowser(user_agent="Windows Chrome",history=True)
url = "http://posting.cityweekly.net/gyrobase/API/Login/CookieV2"
data ={"passwordChallengeResponse":"....._SYGwbDLkSyU5gYKGg",
"email": "<email>%40bu.edu",
"ttl":"129600",
"sessionOnly": "1"
}
headers = {
"Origin": "http://posting.cityweekly.net",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "en-US,en;q=0.8,ru;q=0.6",
"User-Agent": "Windows Chrome", #"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
"Referer": "http://posting.cityweekly.net/utah/Events/AddEvent",
"X-Requested-With": "XMLHttpRequest",
"Connection": "keep-alive",
"Cache-Control": "max-age=0",
"Host":"posting.cityweekly.net"
}
cookie = {"Cookie": "__utma=25975215.1299783561.1416894918.1416894918.1416897574.2; __utmc=25975215; __utmz=25975215.1416894918.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __qca=P0-2083194243-1416894918675; __gads=ID=e3b24038c9228b00:T=1416894918:S=ALNI_MY7ewizuxK0oISnqPJWlLDAeKFMmw; _cb_ls=1; _chartbeat2=D6vh2H_ZbNJDycc-t.1416894962025.1416897589974.1; __utmb=25975215.3.10.1416897574; __utmt=1"}
r = br.session.get(url, data=json.dumps(data), cookies=cookie, headers=headers)
print r.headers
print [item for item in r.cookies.__dict__.items()]
注意,我打印cookies对象,cookies属性(字典)为空。在
您需要执行POST才能登录到站点。一旦你这样做了,我相信cookies就会有正确的值(不是100%的值…)。这post说明了如何正确设置cookies。在
注意:我不认为你需要做额外的请求导入,除非你在RoboBrowser之外使用它。在
相关问题 更多 >
编程相关推荐