Я пытаюсь получить веб-сайт NSE, используя Python следующим образом:
from requests import Session
headers = {
"Host": "www1.nseindia.com",
"Referer": "https://www1.nseindia.com/products/content/equities/equities/eq_security.htm",
"X-Requested-With": "XMLHttpRequest",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36",
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "en-GB,en-US;q=0.9,en;q=0.8",
"Cache-Control": "no-cache",
"Connection": "keep-alive",}
s = Session()
s.headers.update(headers)
url = "https://www.nseindia.com"
r = s.get(url)
print(r.text)
Приведенный выше код работает с моего локального компьютера, но время ожидания, когда я запускаю его из облачного экземпляра Google.
Это может означать, что веб-сайт NSE блокирует мой виртуальный IP-адрес, чтобы изолировать эту проблему, я попытался подключиться с помощью командной строки OpenSSL, которая снова работает с моей локальной машины, но не с виртуальной машины GCP. Дополнительные сведения - от виртуальной машины, к которой она подключается, к серверу NSE выполняет SSL-квитирование, но после этого ответа нет -
$ openssl s_client -connect www.nseindia.com:443
CONNECTED(00000005)
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
verify return:1
depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = GeoTrust RSA CA 2018
verify return:1
depth=0 C = IN, ST = Maharashtra, L = Mumbai, O = National Stock Exchange of India Ltd., OU = IT, CN = www.nseindia.com
verify return:1
---
Certificate chain
0 s:C = IN, ST = Maharashtra, L = Mumbai, O = National Stock Exchange of India Ltd., OU = IT, CN = www.nseindia.com
i:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = GeoTrust RSA CA 2018
1 s:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = GeoTrust RSA CA 2018
i:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
2 s:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
i:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
---
Server certificate
-----BEGIN CERTIFICATE-----
CERTIFICATE REMOVED
-----END CERTIFICATE-----
subject=C = IN, ST = Maharashtra, L = Mumbai, O = National Stock Exchange of India Ltd., OU = IT, CN = www.nseindia.com
issuer=C = US, O = DigiCert Inc, OU = www.digicert.com, CN = GeoTrust RSA CA 2018
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 6232 bytes and written 444 bytes
Verification: OK
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES128-GCM-SHA256
Session-ID: xxxxxxxxxxxxxxxxxxxxxxx
Session-ID-ctx:
Master-Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 7200 (seconds)
TLS session ticket:
0000 - 00 00 26 30 a1 f5 2f bf-a1 57 5e 66 57 e6 b6 f6 ..&0../..W^fW...
....
....
00a0 - b6 84 52 56 e5 fb f1 4f-03 c5 8e 1a 04 c1 b8 6b ..RV...O.......k
Start Time: 1583754185
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: no
---
GET / HTTP/1.1
Host: www.nseindia.com
accept-encoding: gzip, deflate, br
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
accept-language: en-GB,en-US;q=0.9,en;q=0.8
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
cache-control: no-cache
pragma: no-cache
upgrade-insecure-requests: 1
Запросите экспертов, чтобы выяснить, что может послужить причиной отсутствия ответа и что можно сделать для получить ответ.