簡體   English   中英

Python 請求等待無響應

[英]Python Request Waits not Responding

import requests
res = requests.get("https://api.nasdaq.com/api/quote/list-type/nasdaq100")

當我在瀏覽器中輸入 url 時,它會提供數據,但是當我使用 python 時,它不會獲取數據,只是等待。 謝謝。

似乎用戶代理畢竟是罪魁禍首:

>>> import requests
>>> requests.get("https://api.nasdaq.com/api/quote/list-type/nasdaq100", headers={"User-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36'})
<Response [200]>

網站傾向於阻止機器人和爬蟲的用戶代理。 尊重他們的意願是一種常見的互聯網禮儀。

似乎納斯達克的 API有免費和高級等級。 我猜他們希望編程 Python 用戶獲得 API 密鑰。

請記住,他們也有自己的Python API


看起來納斯達克的服務器使連接保持打開狀態並在發送不同的用戶代理時卡住。

嘗試在注釋和未注釋ssl.send()之間切換:

import socket, ssl
context = ssl.create_default_context()
hostname = "api.nasdaq.com"
sock = socket.create_connection((hostname, 443))
ssl = context.wrap_socket(sock, server_hostname=hostname)
#ssl.send(b'GET /api/quote/list-type/nasdaq100 HTTP/1.1\r\nHost: api.nasdaq.com\r\nUser-Agent: python-requests/2.27.1\r\nAccept-Encoding: identity\r\nAccept: */*\r\nConnection: keep-alive\r\n\r\n')
ssl.send(b'GET /api/quote/list-type/nasdaq100 HTTP/1.1\r\nHost: api.nasdaq.com\r\nUser-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X);AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75;Mobile/14E5239e Safari/602.1\r\nAccept-Encoding: identity\r\nAccept: */*\r\nConnection: keep-alive\r\n\r\n')
print(ssl.recv(1024))

在 chrome 中偽造請求的用戶代理雖然有效,但返回 403 未授權。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM