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

问题描述 投票:0回答:2

我制作了一个简单的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()
python urllib2 mechanize
2个回答
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()


0
投票

好像@felipsmartins是对的,这是一个特定于Openshift的问题。

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

© www.soinside.com 2019 - 2024. All rights reserved.