Python请求由服务器阻止的帖子

时间:2016-03-03 23:49:20

标签: python python-requests

我正在尝试使用我的用户名和密码登录网站,转到报告页面,选择条件并下载报告。我正在尝试使用请求自动执行此操作。

到目前为止,我有:

report_page_url = 'http://url......'
signin = {username, password}
data = {
     'from_day': '1',
     'from_month': '3',
     'from_year': '2016'}

 with requests.Session() as s:
     s.post(login_url, data=signin)
     download = s.post(report_page_url, data=data)

我可以使用第一篇文章登录网站,并下载报告页面的页面内容。

但是,每次我在报告页面上执行request.post并传入params填写表单时,它会将我重定向到包含错误消息的页面:

  

您正在尝试修改来自似乎不是来自FreePBX页面链接或按钮的URL的设置。如果你这可能会发生   手动输入以下网址。此操作已被阻止,因为   HTTP_REFERER与您当前的SERVER不匹配。如果您需要   此访问权限,您可以在Advanced中设置Check Server Referrer = false   用于禁用此安全检查的设置。

无论如何都要绕过它?

谢谢!

1 个答案:

答案 0 :(得分:2)

听起来他们实际上正在检查HTTP_REFERER并拒绝来自外国地方的帖子。尝试在请求中添加http_referer标头,例如:

s.headers.update({'referer': my_referer})

你需要弄清楚他们期望在my_referer中看到什么价值。可能只是他们自己的域名。