针对 AkShare 和 efinance 的底层补丁,自动为东财等接口注入代理认证头,从而避免 `stock_zh_a_spot_em` 等方法报错。
Project description
AkShare Proxy Patch
针对 akshare、efinance、yfinance 的🐒插件补丁,解决
stock_zh_a_spot_em、stock_zh_a_hist、get_realtime_quotes等接口报错问题和 YahooYFRateLimitError问题。并对akshare部分接口进行多线程加速处理。
✨ 特性
- 解决
akshare的stock_zh_a_spot_em、stock_zh_a_hist接口报错问题 - 解决
efinance的get_realtime_quotes等接口报错问题 - 解决
yfinanceYahoo接口国内无法使用问题 - 加速
stock_zh_a_spot_em、stock_individual_fund_flow_rank等akshare接口
📦 安装
pip install akshare-proxy-patch==0.5.0
🚀 使用方法(akshare / efinance / yfinance)
-
点击前往插件官网 获取
TOKEN。 -
akshare或efinance用户:在 Python 文件最顶部添加如下代码,并替换你的TOKEN。调用非常简单,不需要使用 AI 魔改。
# python 文件顶部添加如下代码
# 插件引入和调用一定要放到最顶部!不能在 akshare 或 efinance 之后引入!
import akshare_proxy_patch
akshare_proxy_patch.install_patch(
"101.201.173.125",
auth_token="你的TOKEN",
retry=30,
# 封控的域名列表,可自行调整
hook_domains=[
"fund.eastmoney.com",
"push2.eastmoney.com",
"push2his.eastmoney.com",
"emweb.securities.eastmoney.com",
],
fast=True
)
# --------------------------
# 后续你的正常业务代码保持不变
# --------------------------
# 假如你使用 akshare
import akshare as ak
df = ak.stock_zh_a_spot_em()
# 假如你使用 efinance
import efinance as ef
ef.stock.get_realtime_quotes()
yfinance用户:在 Python 文件顶部添加如下代码,并替换你的TOKEN。调用非常简单,不需要使用 AI 魔改。
# python 文件顶部添加如下代码
# 插件引入和调用一定要放到最顶部!不能在 akshare 或 efinance 之后引入!
import akshare_proxy_patch
akshare_proxy_patch.install_yfinance_patch(
"101.201.173.125",
auth_token="你的TOKEN",
retry=30,
)
# --------------------------
# 后续你的正常业务代码保持不变
# --------------------------
import yfinance as yf
data = yf.download("AAPL", start="2017-01-01", end="2017-04-30")
install_patch 参数说明
- 参数1:网关
- 默认为
101.201.173.125不可修改
- 默认为
- 参数2:TOKEN
- 授权凭证
- 参数3:重试次数
- 默认为30,建议保持不变
- 参数4:封控的域名列表
- 接口
URL包含数组中的其中一条,就会走插件。 - 可点击
ak或ef函数查看接口源码对应的URL,根据封控情况细化可以降低积分消耗。 - 如只封控
stock_zh_a_spot_em这个接口,hook_domains可设置为["https://82.push2.eastmoney.com/api/qt/clist/get"]。
- 接口
- 参数5:是否启用快速模式,加速列表如下:
- 所有包含
fetch_paginated_data函数的接口,如stock_zh_a_spot_em stock_individual_fund_flow_rankstock_sector_fund_flow_rankfund_money_fund_info_emfund_graded_fund_info_emfund_etf_fund_info_emfund_fh_emfund_cf_emfund_fh_rank_em
- 所有包含
如何在 aktools 内集成插件?
aktools想要集成插件,需下载 akt.py 文件,并填入您的TOKEN。- 然后执行
python akt.py即可启动一个http://127.0.0.1:8080/服务。只是启动方式不同而已,使用请参考 aktools 官方文档。
如何多进程使用,快速拉取数据?
- 尽量使用
efinance替代akshare来获取数据,efinance内置多线程,效率更高,更省积分。 - 在大规模快速获取数据时,仍需要多进程来提升效率。 参考
examples/并发获取股票行情/目录下的main.py和worker.py示例,修改worker.py中的auth_token,执行python main.py即可。 main.py负责分割任务和启动多个worker.py进程,worker.py中引入插件并执行数据获取逻辑,最后将结果合并保存。
如何灵活禁用/启用插件?
加入如下代码后插件就会被禁用:
akshare_proxy_patch.uninstall_patch()
下面是插件启用 --> 禁用 --> 再次启用的例子:
##### 1. 启用插件
import akshare_proxy_patch
akshare_proxy_patch.install_patch(
"101.201.173.125",
auth_token='你的TOKEN',
retry=30,
# 封控的域名列表,可自行调整
hook_domains=[
"fund.eastmoney.com",
"push2.eastmoney.com",
"push2his.eastmoney.com",
"emweb.securities.eastmoney.com",
],
fast=True
)
import akshare as ak
df = ak.fund_etf_hist_em()
###### 2. 禁用插件
akshare_proxy_patch.uninstall_patch()
# 禁用后测试
try:
df = ak.fund_etf_hist_em()
except Exception as e:
print('插件被禁用了,这里可能会报错')
##### 3. 再次启用插件,重复上述 1、2 的代码即可
我没使用 akshare 或 efinance,能集成插件吗?
- 如果使用 Python 语言的
requests库请求接口,插件能自动 hook 住请求,正常工作。 - 如果您使用其他语言或 python 的其他库,可 手动提取代理 自行实现封控解除。
使用问题交流群
如使用时遇到问题,或对插件有什么意见或建议,可进群交流:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
akshare_proxy_patch-0.5.0.tar.gz
(25.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters