【问题标题】:Getting urllib2 Permission denied error while accessing an https webpage?访问 https 网页时出现 urllib2 Permission denied 错误?
【发布时间】:2016-01-27 22:01:44
【问题描述】:

我制作了一个简单的 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()

【问题讨论】:

  • @felipsmartins 它在本地对我有用,但是当我在 OpenShift 服务器上运行脚本时出现此错误。
  • @OmarEina 好吧...过去我也遇到过同样的问题。实际上,由于 SELINUX 问题,Openshift 不允许连接到远程主机以及非默认端口。也许你想选择 Heroku。看这个帖子:github.com/guzzle/guzzle/issues/1001

标签: python urllib2 mechanize


【解决方案1】:

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

【讨论】:

  • 我认为如果刮板阻塞是问题所在,那么当我在我的机器上本地运行它时,我会遇到同样的问题,你不这么认为吗?
【解决方案2】:

似乎@felipsmartins 是对的,这是 Openshift 特有的问题。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-12
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    相关资源
    最近更新 更多