"该网站的所有者已根据您的浏览器签名禁止您访问"...在python程序中的网址请求

BER*_*ien 13 javascript python browser cookies urllib

在做一个简单的请求时,在python(精确的是Entought Canopy)上,使用urllib2,服务器拒绝我访问:

data = urllib.urlopen(an url i cannot post because of reputation, params)

print data.read()
Run Code Online (Sandbox Code Playgroud)

错误:

Access denied | play.pokemonshowdown.com used CloudFlare to restrict access

The owner of this website (play.pokemonshowdown.com) has banned your access based on your browser's signature (14e894f5bf8d0920-ua48).
Run Code Online (Sandbox Code Playgroud)

这显然是一个普遍问题,所以我在网上找到了一些线索.

https://support.cloudflare.com/hc/en-us/articles/200171806-Error-1010-The-owner-of-this-website-has-banned-your-access-based-on-your-browser-签名:

防火墙,代理,浏览器插件或扩展可能会产生误报.尝试使用其他浏览器访问该站点作为访问该站点的替代方法.

https://support.cloudflare.com/hc/en-us/articles/200170176-Why-am-I-getting-a-Checking-your-Browser-before-accessing-message-before-entering-a-site- on-CloudFlare-:

当网站所有者打开一个名为"我受到攻击"的DDoS保护和缓解工具时,"访问前检查您的浏览器(insertsite.com)".该页面通常会消失,并授予您访问该网站的权限.秒.

注意:您需要在浏览器中启用JavaScript和Cookie才能通过检查.检查是为了确保您不是僵尸网络的一部分."

答案很清楚,除了这一件事......*我没有使用任何浏览器!请求是通过python程序完成的,请求是urllib.urlopen......

这是否意味着我应该拥有,例如,开启的Cookie和JavaScript ... Enthought Canopy?这句话是否有任何句子?在尝试使用编程控制台的基本请求访问站点时,我几乎不了解有关此浏览器特定检查激活的任何信息.这就是我寻求你帮助的原因.

为什么会这样?如何绕过它?

bru*_*ers 13

这个网站"检查"的不是你的浏览器,而是"用户代理" - 你的客户端程序(浏览器,Python脚本或其他)最终作为请求头发送的字符串.您可以指定另一个用户代理,cf 在urllib2.urlopen上更改用户代理.

  • 我面临同样的问题,我在 PHP 中更改了 UA,但仍然收到相同的消息。 (2认同)