我try 了以下几点:
- 利用德国证券交易所的API(https://api.boerse-frankfurt.de/v1/search/equity_search)检索指数值.
- 可以使用参数从外部访问API.通常,它会从https://www.boerse-frankfurt.de/index/dax/zugehoerige-werte开始.
- 这里有一个类似的问题(Extract or generate X-Client-TraceId for header in GET-request),但我试图查询不同的API端点.
- 这里有一篇博客文章(https://lwthiker.com/reversing/2022/02/12/analyzing-stock-exchange-api.html),但我无法适应我的场景.
- 我怀疑我的URL写得不正确.
这是我的源代码:
import datetime
import hashlib
import json
import requests
from pprint import pprint
def generate_headers(url):
salt = "w4ivc1ATTGta6njAZzMbkL3kJwxMfEAKDa3MNr"
current_time = datetime.datetime.now(tz=datetime.timezone.utc)
client_date = (current_time
.isoformat(timespec="milliseconds")
.replace("+00:00", "Z")
)
client_traceid = hashlib.md5(
(client_date + url + salt).encode("utf-8")
)
security = hashlib.md5(
current_time.strftime("%Y%m%d%H%M").encode("utf-8")
)
return {
"Client-Date": client_date,
"X-Client-TraceId": client_traceid.hexdigest(),
"X-Security": security.hexdigest()
}
payload = {"indices" : ["DE0007203275"],
"lang" : "de",
"offset" : 0,
"limit" : 50,
"sorting" : "TURNOVER",
"sortOrder": "DESC"}
urlString = "https://api.boerse-frankfurt.de/v1/search/equity_search?indices=['DE0007203275']&lang=de&offset=0&limit=50&sorting=TURNOVER&sortOrder=DESC"
result = generate_headers(urlString)
print(result)
headers = {"Host" : "api.boerse-frankfurt.de",
"Referer" : "https://www.boerse-frankfurt.de/",
"Content-Type" : "application/json; charset=utf-8",
"Client-Date" : result["Client-Date"],
"X-Client-TraceId" : result["X-Client-TraceId"],
"X-Security" : result["X-Security"]
}
response = requests.post(url,
headers=headers,
json=payload)
pprint(json.loads(response.content))
欢迎任何建议.谢谢你!