Уведомления

Группа в Telegram: @pythonsu

#1 Июль 29, 2015 11:16:04

dezinfo
Зарегистрирован: 2015-05-23
Сообщения: 52
Репутация: +  0  -
Профиль   Отправить e-mail  

Не открывает https ссылки

Не читается содержимое страниц со ссылками https.

Работает

import urllib.request
res = urllib.request.urlopen('http://sql.ru').read()


Не работает
import urllib.request
res = urllib.request.urlopen('https://translate.google.com.ua/').read()

Офлайн

#2 Июль 29, 2015 11:37:01

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Не открывает https ссылки

>>> import urllib.request
>>> 
>>> url = 'https://mail.yandex.ru/'
>>> data = urllib.request.urlopen(url)
>>> data.read(10)
b'<!DOCTYPE '
>>>

С тем сайтом рукопожатие проходит и начинается обмен, а потом там Forbidden возвращается. Скорее всего, реакция на заголовки. Сформируй запрос, похожий на браузер.



Отредактировано py.user.next (Июль 29, 2015 11:46:10)

Офлайн

#3 Июль 29, 2015 12:26:16

dezinfo
Зарегистрирован: 2015-05-23
Сообщения: 52
Репутация: +  0  -
Профиль   Отправить e-mail  

Не открывает https ссылки

Похоже что то с сеткой на работе. Попробую из дома. Но это не гуд

TimeoutError: Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было
разорвано уже установленное соединение из-за неверного отклика уже подключенного
компьютера

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
File “C:\Python34\lib\urllib\request.py”, line 161, in urlopen
return opener.open(url, data, timeout)
File “C:\Python34\lib\urllib\request.py”, line 463, in open
response = self._open(req, data)
File “C:\Python34\lib\urllib\request.py”, line 481, in _open
‘_open’, req)
File “C:\Python34\lib\urllib\request.py”, line 441, in _call_chain
result = func(*args)
File “C:\Python34\lib\urllib\request.py”, line 1225, in https_open
context=self._context, check_hostname=self._check_hostname)
File “C:\Python34\lib\urllib\request.py”, line 1184, in do_open
raise URLError(err)
urllib.error.URLError: <urlopen error Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен
нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера>

Офлайн

#4 Авг. 7, 2015 17:50:02

dezinfo
Зарегистрирован: 2015-05-23
Сообщения: 52
Репутация: +  0  -
Профиль   Отправить e-mail  

Не открывает https ссылки

Вопрос по теме. Можно как то передать данному запросу информацию, что открываю например chrom?

url = requests.get('https://yandex.ru/')


Так как через chrom открывается

Офлайн

#5 Авг. 7, 2015 19:30:32

ayb
Зарегистрирован: 2014-04-01
Сообщения: 297
Репутация: +  24  -
Профиль   Отправить e-mail  

Не открывает https ссылки

Офлайн

#6 Авг. 9, 2015 03:06:20

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Не открывает https ссылки

dezinfo
Вопрос по теме. Можно как то передать данному запросу информацию, что открываю например chrom?
В хроме нажимаете Ctrl+Shift+I -> выбираете вкладку Network(Сеть) -> выбираете первый запрос и внизу смотрите Request Headers -> отправляем запрос с параметром headers
как минимум нужно передать User-Agent

маленький пример:
>>> import urllib.request
>>> headers = {'User-Agent': ('Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 '
...                           '(KHTML, like Gecko) Ubuntu Chromium/43.0.2357.130 '
...                           'Chrome/43.0.2357.130 Safari/537.36')}
>>> url = 'http://www.yandex.ru'
>>> req = urllib.request.Request(url=url, headers=headers)
>>> req.headers
{'User-agent': 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/43.0.2357.130 Chrome/43.0.2357.130 Safari/537.36'}
>>> r = urllib.request.urlopen(req)
>>> r.status
200



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Авг. 9, 2015 03:06:46)

Офлайн

#7 Авг. 11, 2015 13:10:14

dezinfo
Зарегистрирован: 2015-05-23
Сообщения: 52
Репутация: +  0  -
Профиль   Отправить e-mail  

Не открывает https ссылки

Никак не хочет https пробивать. С http все нормально.

[code python]import urllib.request
headers = {'User-Agent': ('Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.130 Safari/537.36')}

url = 'https://yandex.ru/'

req = urllib.request.Request(url=url, headers=headers)
r = urllib.request.urlopen(req)

print(r.status)[/code]


Ошибка

urllib.error.URLError: <urlopen error [WinError 10060] Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера>

Офлайн

#8 Авг. 11, 2015 19:13:15

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Не открывает https ссылки

>>> import urllib.request
>>> headers = {'User-Agent': ('Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.130 Safari/537.36')}
>>> 
>>> url = 'https://yandex.ru/'
>>> 
>>> req = urllib.request.Request(url=url, headers=headers)
>>> r = urllib.request.urlopen(req)
>>> 
>>> print(r.status)
200
скорее всего что-то на уровне системы. удалите виндовс и будет вам счастье с линуксом!



————————————————
-*- Simple is better than complex -*-

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version