访问https网页时获取urllib2 Permission denied错误?

时间:2016-01-27 22:01:45

标签: python urllib2 mechanize

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

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

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

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

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

所以在我运行ubuntu 15.10的机器上运行正常但它在服务器上出现此错误并且仅在我的目标网站上运行时非常奇怪,而且它是一个非常简单的网站(链接在下面的脚本中),我认为它的网站具体!

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

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

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

import urllib2

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

print page.read()

2 个答案:

答案 0 :(得分:0)

这通常意味着该网站会阻止抓取工具。因此,为了解决这个问题,你必须伪造一个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()

答案 1 :(得分:0)

似乎@felipsmartins是对的,它是一个特定于Openshift的问题。

我能够让我的脚本轻松地在Heroku上工作。