知行札记
AKShare 实现与跨语言接入调查

AKShare 历史调查依据与复算边界

保留源码位置、数量口径及未完成检查。

调查基线为原材料记载的 2026-10-04、AKShare v1.19.1、浅克隆短提交号 fac1e50。本轮读取了归档报告;未取得原运行环境或重跑接口、全库计数及 npm 检索。下文统计和“实测”均属于原调查记录,不能自动代表当前版本或服务可用性。短提交链接本轮未成功取得,数字保留为历史证据并披露复算边界。

关键源码位置(本地 akshare-research/,v1.19.1)

位置内容
akshare/_version.py:1__version__ = "1.19.1"
akshare/__init__.py:3311-3393 起 / :5999 起 / :9-3310344 条 import 聚合 / __all__ 1102 项 / 手写版本记录
pyproject.toml:10, :97-98, :100-110Python>=3.11、动态版本、js/json 数据文件打包、ruff 排除 __init__.py
akshare/stock_feature/stock_hist_em.py:981-1039, :28stock_zh_a_hist 硬编码 URL/ut token
akshare/stock_feature/stock_board_industry_ths.py:43-52, :237同花顺 JS→v_cookie→Cookie/hexin-v 链路
akshare/stock/stock_new_cninfo.py:38-58;akshare/bond/bond_issue_cninfo.py:44-47巨潮 JS→mcode→Accept-Enckey 链路(14 个浏览器头)
akshare/stock/cons.py:239, :40;akshare/stock/stock_zh_a_sina.py:62, :67, :183-187hk_js_decode;明文 http 行情 URL;新浪解密链路
akshare/data/ths.js:2、akshare/data/cninfo.js:10-19打包分发的站点逆向 JS
curl_cffi 全部 5 个文件(原调研修订 grep 复核补全):akshare/economic/macro_china_nbs.py:63、akshare/economic/macro_china.py:359、akshare/news/news_stock.py:12、akshare/news/news_baidu.py:32,59,139、akshare/stock_feature/stock_hk_valuation_baidu.py:9impersonate chrome / chrome110 TLS 指纹伪装
akshare/economic/macro_china.py:28-42降级 TLSv1.2 + SECLEVEL=1 适配器
akshare/request.py:10-62、akshare/utils/request.py:15-64、akshare/futures/requests_fun.py:21-49三套重试实现
akshare/utils/context.py:1-31、akshare/utils/cons.py:9-12、akshare/utils/func.py:49代理配置 / 公共 UA 常量 / 翻页随机限速
akshare/registry.py:31-41, :175, :215、akshare/data/interfaces.json接口注册表与检索(1090 条)
scripts/build_registry.py、scripts/check_release.py、tests/(8 文件)构建期注册、发布校验、仅工具测试
README.md:192, :28, :54、docs/introduction.md:3、docs/deploy_http.md:13AKTools HTTP API 官方跨语言路径

关键命令与口径(原调研实测)

  • wc -l akshare/__init__.py = 7103;cat akshare/_version.py = 1.19.1(原报告撰写时独立复跑确认)
  • grep -rl py_mini_racer akshare --include='*.py' | wc -l = 40(原报告复跑确认)
  • grep -rl 'import requests' … | wc -l = 323;grep -rho 'http://' = 507、'https://' = 2626(原报告复跑确认)
  • ast 解析 __init__.py:344 条 import / 1101 名 / 去重 1096;interfaces.json = 1090 条;模块级公开 def = 1181(85 个未导出)
  • 括号配平解析全库 requests 调用 = 1291,带 headers= 442(34.2%);UA 正则解析 291 值 = Chrome 287 + iPhone 2 + MSIE 2,版本跨度 56–144
  • 运行时实测(uv):原调研 6 个点名接口 + 原调研修订补测 currency_boc_safe→DataFrame(8059,26)、spot_hist_sge→DataFrame(2375,5),合计 8 品类 8 接口均返回 DataFrame;2 个东财接口因沙箱断连未测
  • 原调研修订新增复核(2026-10-04,均在本仓库执行):
    • UA 口径:grep -rn '"User-Agent"' … | wc -l = 245,大小写不敏感 = 298(其中小写 user-agent 键 53 处,245+53=298,解释 245 vs 291 的口径差);timeout= 全库 85 处(vs 1291 调用点);直接 requests.get/post 文件 314 个
    • 代理生效范围:原调查 grep 记录 config.proxies 全库仅 akshare/request.py:25, :80 两处读取;make_request_with_retry_* 的使用文件仅 qdii_jsl.py、stock_value_em.py、stock_info.py 3 个
    • curl_cffi 文件清单 5 个(见附录 A,grep -rl curl_cffi)
    • documented 字段:实读 interfaces.json,1090 条中 documented=true 1015 条;字段定义在 scripts/build_registry.py:232
    • 三套 stock 口径对账:ast 解析 __init__.py 导入映射(子包口径 395 / 前缀口径 407)× interfaces.json category=stock(388),三组差集逐一列出并验算 395−11+4=388
    • AKTools endpoint:本地 docs/deploy_http.md 仅含部署说明(pip install aktools / python -m aktools),/api/public/<接口名> 格式与 8080 端口取自官方文档 https://aktools.akfamily.xyz/(WebFetch 抓取,MATLAB 示例给出 symbol/period/start_date/end_date/adjust 参数名)
  • GitHub API(gh api):orgs/akfamily/repos = 9 仓库无 TS;npm registry 搜索 akshare = 23 包,逐包核查 repository/maintainer

未尽事项

  • 仓库为 depth=1 浅克隆,未做 git 历史维度的接口增删频率分析(以 __init__.py 版本记录与 changelog 代替)。
  • stock_zh_a_spot_em / forex_spot_em 两个东财接口运行时实测因沙箱网络被远端断连未完成(失败原因未确定,不能据此单独判断接口缺陷或环境原因)。
  • 「1093 个可定位 return 的接口中 446 个直接返回 pandas 构造调用」的静态比例,复核员未逐项复算(方向已由 8 接口运行时实测 + 源码抽查佐证)。

最后更新于

本页目录