访问 https 网页时出现 urllib2 Permission denied 错误?

Getting urllib2 Permission denied error while accessing an https webpage?

我制作了一个简单的 python 脚本来访问网页并登录并从中检索数据,它在我的机器上使用了 urllib/urllib2 或 mechanize。

所以我想在一个网站中使用这个脚本,这样任何用户都可以在我的网站上填写他的登录凭据,这个脚本将获取这些数据并去填写另一个网站。

我将 OpenShift.com 用作在线 python 服务器并在其上尝试了我的脚本,它适用于我尝试过的所有站点 (http/https),但它给出了一个错误我的目标网站是:

urllib2.URLError: <urlopen error [Errno 13] Permission denied>

完整错误:http://pastebin.com/73vTYEvu

所以它在我的机器上运行良好真的很奇怪 运行 ubuntu 15.10 但它在服务器上出现此错误并且仅在我的目标网站上出现,这是一个非常简单的网站(link 在下面的脚本中),我认为它是特定于网站的!

我整天都在寻找这个,我尝试了很多方法,包括 https 特定方法,但仍然没有用。

我不介意更改整个方法或服务器,只要它有效:)

我的脚本:(导致错误的部分)

import urllib2

page = urllib2.urlopen('https://uos.sharjah.ac.ae:9050/prod_enUS/twbkwbis.P_WWWLogin')

print page.read()

这通常意味着网站屏蔽了抓取工具。因此,要解决这个问题,您必须伪造一个 User-Agent 字符串并将其传递到 urllib2 构造函数中,如下所示: req = urllib2.Request('https://uos.sharjah.ac.ae:9050/prod_enUS/twbkwbis.P_WWWLogin', headers={ 'User-Agent': 'Mozilla/5.0' }) html = urllib2.urlopen(req).read()

看来@felipsmartins 是对的,这是一个 Openshift 特定问题。

我能够让我的脚本轻松地在 Heroku 上运行。