2016-01-27 2 views
0

Я сделал простой скрипт python для доступа к веб-странице и входа в систему и извлечения данных из него, он работал на моей машине, используя как urllib/urllib2, так и mechanize.Получение urllib2 Разрешение отклонено при доступе к веб-странице https?

Таким образом, я хотел использовать этот скрипт на веб-сайте, чтобы любой пользователь мог заполнить свои учетные данные на моем сайте, и этот скрипт возьмет эти данные и заполнит другой веб-сайт.

Я использовал OpenShift.com как интернет-сервер питона и попробовал мой сценарий на него, он работал на всех сайтах, которые я попробовал (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() 
+0

это работает для меня. – felipsmartins

+0

@felipsmartins он работал для меня локально, но он дает эту ошибку, когда я запускаю скрипт на сервере OpenShift. –

+2

@ OmarEina хорошо ... в прошлом у меня была такая же проблема. Фактически, Openshift не позволяет подключаться к удаленным хостам вместе с портами, отличными от стандартного, из-за проблем SELINUX. Возможно, вы хотите выбрать Heroku. Посмотрите эту тему: https://github.com/guzzle/guzzle/issues/1001 – felipsmartins

ответ

0

Похоже @felipsmartins прав, что это конкретная проблема OpenShift.

Я смог получить мой скрипт для работы на Heroku легко.

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

просто попробовал то, что вы упомянули, но все равно такую ​​же ошибку. –

+0

Я думаю, что если бы блокировка скрепок была проблемой, я бы столкнулся с той же проблемой, когда я ее локально запускал на своей машине, не так ли? –

Смежные вопросы