fix: switch to Sina backend, add Referer header for HK access
This commit is contained in:
@@ -23,7 +23,7 @@ class Settings(BaseSettings):
|
||||
# AKShare
|
||||
akshare_max_retries: int = 3
|
||||
akshare_retry_delay: float = 1.0
|
||||
akshare_backend: str = "auto" # auto, em (East Money), sina
|
||||
akshare_backend: str = "sina" # auto, em (East Money), sina
|
||||
|
||||
# Realtime
|
||||
realtime_poll_interval: int = 5
|
||||
|
||||
@@ -43,6 +43,24 @@ def _getproxies_direct():
|
||||
urllib.request.getproxies = _getproxies_direct
|
||||
logger.debug("Proxy disabled: env vars cleared + macOS SystemConfiguration bypassed")
|
||||
|
||||
# === Patch requests to add Referer header for Sina (required from HK) ===
|
||||
import requests as _requests
|
||||
_original_session_request = _requests.Session.request
|
||||
|
||||
|
||||
def _patched_session_request(self, method, url, **kwargs):
|
||||
"""Inject Referer header for Sina finance domains so they don't 403."""
|
||||
if isinstance(url, str) and "sina.com.cn" in url:
|
||||
headers = kwargs.get("headers", {})
|
||||
if isinstance(headers, dict) and "Referer" not in headers:
|
||||
headers = dict(headers)
|
||||
headers["Referer"] = "https://finance.sina.com.cn"
|
||||
kwargs["headers"] = headers
|
||||
return _original_session_request(self, method, url, **kwargs)
|
||||
|
||||
|
||||
_requests.Session.request = _patched_session_request
|
||||
|
||||
|
||||
def _to_akshare_date(d: date) -> str:
|
||||
return d.strftime("%Y%m%d")
|
||||
|
||||
Reference in New Issue
Block a user