Получение необработанного, необработанного ответа на запрос HTTPS GET - PullRequest
0 голосов
/ 19 января 2012

Как бы вы получили абсолютно неразобранный ответ на HTTPS-запрос?

Существуют ли какие-либо библиотеки HTTP, которые позволят вам получить необработанный ответ, или единственный способ создать запрос вручную с использованием сокетов?

Я специально пытаюсь увидеть, какие символы новой строки отправляет сервер.

Ответы [ 2 ]

1 голос
/ 19 января 2012

Пример из документов :

import socket, ssl, pprint

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# require a certificate from the server
ssl_sock = ssl.wrap_socket(s,
                           # http://curl.haxx.se/ca/cacert.pem
                           ca_certs="cacert.pem",
                           cert_reqs=ssl.CERT_REQUIRED)

ssl_sock.connect(('www.verisign.com', 443))

print repr(ssl_sock.getpeername())
print ssl_sock.cipher()
print pprint.pformat(ssl_sock.getpeercert())

# Set a simple HTTP request -- use httplib in actual code.
ssl_sock.write("""GET / HTTP/1.0\r
Host: www.verisign.com\r\n\r\n""")

# Read a chunk of data.  Will not necessarily
# read all the data returned by the server.
data = ssl_sock.read()
print repr(data)[:79]

# note that closing the SSLSocket will also close the underlying socket
ssl_sock.close()

выход

(ip, 443)
('DHE-RSA-AES256-SHA', 'TLSv1/SSLv3', 256)
{'notAfter': 'May 25 23:59:59 2012 GMT',
 'subject': ((('1.3.6.1.4.1.311.60.2.1.3', u'US'),),
             (('1.3.6.1.4.1.311.60.2.1.2', u'Delaware'),),
             (('businessCategory', u'V1.0, Clause 5.(b)'),),
             (('serialNumber', u'2497886'),),
             (('countryName', u'US'),),
             (('postalCode', u'94043'),),
             (('stateOrProvinceName', u'California'),),
             (('localityName', u'Mountain View'),),
             (('streetAddress', u'487 East Middlefield Road'),),
             (('organizationName', u'VeriSign, Inc.'),),
             (('organizationalUnitName', u' Production Security Services'),),
             (('commonName', u'www.verisign.com'),))}
'HTTP/1.1 200 OK\r\nDate: Thu, 19 Jan 2012 01:47:31 GMT\r\nServer: Apache\r\nSe

Пример с M2Crypto .

0 голосов
/ 19 января 2012

Это зависит от того, что вы собираетесь делать с результатом.httplib.HTTPSConnection имеет метод set_debuglevel, который позволяет печатать данные ответа на стандартный вывод (хотя каждая строка имеет префикс)Для целей отладки это было именно то, что мне было нужно.Не уверен, это то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...