Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 8, 2006 14:05:56

Mielofon
От:
Зарегистрирован: 2006-08-08
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

HTTPS в Python 2.4 под WinXP

>Никак не выходит подключить HTTPS. :-(
>Ставил Win32OpenSSL-v0.9.8b.exe и pyOpenSSL-0.6.win32-py2.4.exe однако HTPPS ка не было так и нет..

Т.е. например:

import httplib
HOSTNAME = ‘login.yahoo.com
conn = httplib.HTTPSConnection(HOSTNAME)
conn.putrequest('GET', ‘/’)
conn.endheaders()
response = conn.getresponse()
print response.read()


File “D:\Python24\lib\httplib.py”, line 1069, in connect
ssl = socket.ssl(sock, self.key_file, self.cert_file)
AttributeError: ‘module’ object has no attribute ‘ssl’

:-(



Офлайн

#2 Авг. 8, 2006 17:15:12

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

HTTPS в Python 2.4 под WinXP

>>> import socket
>>> dir(socket)
ssl есть?
+_ssl.pyd в DLLs
а опен ссл и тп вроде как не нужны

Офлайн

#3 Авг. 8, 2006 17:17:42

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

HTTPS в Python 2.4 под WinXP

Проблема в том что pyOpenSSL-0.6.win32-py2.4.exe - это сторонняя библиотека для работы с OpenSSL, предоставляющая такие модули как SSL, crypto и т.д., а для того чтоб работала поддержка ssl соединений в модуле soket требуется родная сишная библиотека _ssl.
Вот кусок кода из socet.py

'''

ssl() – secure socket layer support (only available if configured)

'''
import _socket
from _socket import *

_have_ssl = False
try:
import _ssl
from _ssl import *
_have_ssl = True
except ImportError:
pass

Для того чтоб появилась библиотека _ssl в python его надо собрать с поддержкой OpenSSL(по умолчанию она отключена).



Офлайн

#4 Авг. 8, 2006 17:25:46

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

HTTPS в Python 2.4 под WinXP

slav0nic
>>> import socket
>>> dir(socket)
ssl есть?
+_ssl.pyd в DLLs
а опен ссл и тп вроде как не нужны
OpenSSL действительно не нужен, потому что _ssl при сборке статически линкуется с библиотеками OpenSSL.



Офлайн

#5 Авг. 9, 2006 09:09:03

Mielofon
От:
Зарегистрирован: 2006-08-08
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

HTTPS в Python 2.4 под WinXP

slav0nic
>>> import socket
>>> dir(socket)
ssl есть?
+_ssl.pyd в DLLs
а опен ссл и тп вроде как не нужны
_ssl.pyd-а нет. Вопрос где взять собраный?

попробую обновить ActivePython…



Офлайн

#6 Авг. 9, 2006 11:03:57

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

HTTPS в Python 2.4 под WinXP

хз я юзаю стандартный питон с оффа)
чего и вам желаю, особенно прочтите;) http://aspn.activestate.com/ASPN/docs/ActivePython/2.4/faq.html#ext_ssl

в активе его и нет)

Офлайн

#7 Авг. 9, 2006 11:38:14

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

HTTPS в Python 2.4 под WinXP

Mielofon
_ssl.pyd-а нет. Вопрос где взять собраный?

попробую обновить ActivePython…
Можно скачать исходники python и собрать их самому c поддержкой ssl, для этого нужен MS VC++ 7.1.



Офлайн

#8 Авг. 10, 2006 14:29:19

Mielofon
От:
Зарегистрирован: 2006-08-08
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

HTTPS в Python 2.4 под WinXP

slav0nic
хз я юзаю стандартный питон с оффа)
чего и вам желаю, особенно прочтите;) http://aspn.activestate.com/ASPN/docs/ActivePython/2.4/faq.html#ext_ssl

в активе его и нет)
Скачал с python.org - начало работать..

Но проблемы есть:


import urllib2
import urllib
import httplib
from urlparse import urlparse

class MyHTTPRedirectHandler(urllib2.HTTPRedirectHandler):
def redirect_request(self, req, fp, code, msg, headers, newurl):
pass

URLUser, URlPass = ‘', ’'
URL0 = 'https://service.skydsl.de/logon.php?L=en'
URL1 = 'https://service.skydsl.de/site/account.php'
URL2 = 'https://service.skydsl.de/site/credit.php'

url = URL0
scheme, domain, path, x1, x2, x3 = urlparse(url)

print 1
req = urllib2.Request(url=url)


print 2
handler = urllib2.HTTPBasicAuthHandler()
try:
print 3
req = urllib2.urlopen(req)
except urllib2.HTTPError, e:
print 4
realm_string = e.headers
q1 = realm_string.find('“')
q2 = realm_string.find('”', q1+1)
realm = realm_string


handler.add_password(realm, domain, URLUser, URlPass)

HTTPSh = urllib2.HTTPSHandler()
opener = urllib2.build_opener(handler, HTTPSh, MyHTTPRedirectHandler)
urllib2.install_opener(opener)

try:
print 5
req = urllib2.urlopen(req)
except urllib2.HTTPError, e:
try:
print 6
urllib2.urlopen(req)
except urllib2.HTTPError, e:
print 7
print req.read()
Мне надо залогинится на странице URL0 и последовательно скачать 2 страницы URL1 и URL2.
А оно в результате постоянно redirectit :-( :
1
2
3
send: 'GET /logon.php?L=en HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: service.skydsl.de\r\nConnection: close\r\nUser-agent: Python-urllib/2.4\r\n\r\n'
reply: 'HTTP/1.1 401 Authorization Required\r\n'
header: Date: Thu, 10 Aug 2006 11:24:23 GMT
header: Server: Apache
header: X-Powered-By: PHP/4.3.10
header: Cache-Control: private
header: Last-Modified: Thu, 10 Aug 2006 11:24:23 GMT
header: Pragma: no-cache
header: WWW-Authenticate: Basic realm="skyDSL Webserver"
header: Content-Length: 776
header: Connection: close
header: Content-Type: text/html; charset=iso-8859-1
4
5
send: 'GET /logon.php?L=en HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: service.skydsl.de\r\nConnection: close\r\nUser-agent: Python-urllib/2.4\r\n\r\n'
reply: 'HTTP/1.1 401 Authorization Required\r\n'
header: Date: Thu, 10 Aug 2006 11:24:25 GMT
header: Server: Apache
header: X-Powered-By: PHP/4.3.10
header: Cache-Control: private
header: Last-Modified: Thu, 10 Aug 2006 11:24:25 GMT
header: Pragma: no-cache
header: WWW-Authenticate: Basic realm="skyDSL Webserver"
header: Content-Length: 776
header: Connection: close
header: Content-Type: text/html; charset=iso-8859-1
send: 'GET /logon.php?L=en HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: service.skydsl.de\r\nConnection: close\r\nAuthorization: Basic \r\nUser-agent: Python-urllib/2.4\r\n\r\n'
reply: 'HTTP/1.1 302 Found\r\n'
header: Date: Thu, 10 Aug 2006 11:24:28 GMT
header: Server: Apache
header: X-Powered-By: PHP/4.3.10
header: Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
header: Last-Modified: Thu, 10 Aug 2006 11:24:28 GMT
header: Pragma: no-cache
header: Set-Cookie: SKYSESSION=4bf662e0c9b67c2ad8cf855ad1c8f3a8; path=/
header: Expires: Thu, 19 Nov 1981 08:52:00 GMT
header: Location: /site/index.php?L=en
header: Content-Length: 0
header: Connection: close
header: Content-Type: text/html; charset=iso-8859-1
6
send: 'GET /logon.php?L=en HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: service.skydsl.de\r\nConnection: close\r\nAuthorization: Basic \r\nUser-agent: Python-urllib/2.4\r\n\r\n'
reply: 'HTTP/1.1 302 Found\r\n'
header: Date: Thu, 10 Aug 2006 11:24:32 GMT
header: Server: Apache
header: X-Powered-By: PHP/4.3.10
header: Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
header: Last-Modified: Thu, 10 Aug 2006 11:24:32 GMT
header: Pragma: no-cache
header: Set-Cookie: SKYSESSION=94c00e6f33edcdcf08de7176fc858069; path=/
header: Expires: Thu, 19 Nov 1981 08:52:00 GMT
header: Location: /site/index.php?L=en
header: Content-Length: 0
header: Connection: close
header: Content-Type: text/html; charset=iso-8859-1
7
...



Отредактировано (Авг. 10, 2006 14:31:19)

Офлайн

#9 Авг. 10, 2006 14:32:59

Mielofon
От:
Зарегистрирован: 2006-08-08
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

HTTPS в Python 2.4 под WinXP

slivlen
Mielofon
_ssl.pyd-а нет. Вопрос где взять собраный?

попробую обновить ActivePython…
Можно скачать исходники python и собрать их самому c поддержкой ssl, для этого нужен MS VC++ 7.1.
Вариант с python.org юолее приемлемый :-)



Офлайн

#10 Авг. 10, 2006 15:47:23

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

HTTPS в Python 2.4 под WinXP

Mielofon

Мне надо залогинится на странице URL0 и последовательно скачать 2 страницы URL1 и URL2.
А оно в результате постоянно redirectit :-( :
1
2
3
send: 'GET /logon.php?L=en HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: service.skydsl.de\r\nConnection: close\r\nUser-agent: Python-urllib/2.4\r\n\r\n'
reply: 'HTTP/1.1 401 Authorization Required\r\n'
header: Date: Thu, 10 Aug 2006 11:24:23 GMT
header: Server: Apache
header: X-Powered-By: PHP/4.3.10
header: Cache-Control: private
header: Last-Modified: Thu, 10 Aug 2006 11:24:23 GMT
header: Pragma: no-cache
header: WWW-Authenticate: Basic realm="skyDSL Webserver"
header: Content-Length: 776
header: Connection: close
header: Content-Type: text/html; charset=iso-8859-1
4
5
send: 'GET /logon.php?L=en HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: service.skydsl.de\r\nConnection: close\r\nUser-agent: Python-urllib/2.4\r\n\r\n'
reply: 'HTTP/1.1 401 Authorization Required\r\n'
header: Date: Thu, 10 Aug 2006 11:24:25 GMT
header: Server: Apache
header: X-Powered-By: PHP/4.3.10
header: Cache-Control: private
header: Last-Modified: Thu, 10 Aug 2006 11:24:25 GMT
header: Pragma: no-cache
header: WWW-Authenticate: Basic realm="skyDSL Webserver"
header: Content-Length: 776
header: Connection: close
header: Content-Type: text/html; charset=iso-8859-1
send: 'GET /logon.php?L=en HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: service.skydsl.de\r\nConnection: close\r\nAuthorization: Basic \r\nUser-agent: Python-urllib/2.4\r\n\r\n'
reply: 'HTTP/1.1 302 Found\r\n'
header: Date: Thu, 10 Aug 2006 11:24:28 GMT
header: Server: Apache
header: X-Powered-By: PHP/4.3.10
header: Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
header: Last-Modified: Thu, 10 Aug 2006 11:24:28 GMT
header: Pragma: no-cache
header: Set-Cookie: SKYSESSION=4bf662e0c9b67c2ad8cf855ad1c8f3a8; path=/
header: Expires: Thu, 19 Nov 1981 08:52:00 GMT
header: Location: /site/index.php?L=en
header: Content-Length: 0
header: Connection: close
header: Content-Type: text/html; charset=iso-8859-1
6
send: 'GET /logon.php?L=en HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: service.skydsl.de\r\nConnection: close\r\nAuthorization: Basic \r\nUser-agent: Python-urllib/2.4\r\n\r\n'
reply: 'HTTP/1.1 302 Found\r\n'
header: Date: Thu, 10 Aug 2006 11:24:32 GMT
header: Server: Apache
header: X-Powered-By: PHP/4.3.10
header: Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
header: Last-Modified: Thu, 10 Aug 2006 11:24:32 GMT
header: Pragma: no-cache
header: Set-Cookie: SKYSESSION=94c00e6f33edcdcf08de7176fc858069; path=/
header: Expires: Thu, 19 Nov 1981 08:52:00 GMT
header: Location: /site/index.php?L=en
header: Content-Length: 0
header: Connection: close
header: Content-Type: text/html; charset=iso-8859-1
7
...
Если честно, то доконца не вникал в твой код, поэтому могу ошибаться, но в предпоследнем ответе сервер выдает тебе куки с идентификатором сессии, при следующем запросе попробуй отослать этот куки ему обратно.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version