如何绕过CoinGecko API安全检查 解决访问返回403错误问题
解决方案
该403错误由Cloudflare对低信誉家庭IP、默认爬虫请求头的拦截触发,可按以下方案尝试解决:
- 修改默认请求头,模拟真实浏览器请求
requests默认会携带User-Agent: python-requests/xxx的标识,很容易被Cloudflare识别拦截,修改为真实浏览器UA、补充其他标准请求头即可降低拦截概率,示例代码:
import requests url = "https://api.coingecko.com/api/v3/coins/bitcoin/market_chart?vs_currency=usd&days=30" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36", "Accept": "application/json", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", "Referer": "https://www.coingecko.com/" } with requests.get(url, headers=headers) as source: print(source.status_code) print(source.json())
如果使用pycoingecko库,也可以传入自定义带请求头的会话:
from pycoingecko import CoinGeckoAPI import requests session = requests.Session() session.headers.update({ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36", "Referer": "https://www.coingecko.com/" }) cg = CoinGeckoAPI(session=session) print(cg.get_coin_market_chart_by_id(id='bitcoin', vs_currency='usd', days=1))
- 使用专门绕过Cloudflare验证的第三方库
如果加请求头还是被拦截,可以用适配Cloudflare验证规则的专用请求库,它会自动处理Cloudflare的JS验证、hCaptcha验证逻辑,示例代码:
import cloudscraper scraper = cloudscraper.create_scraper() url = "https://api.coingecko.com/api/v3/coins/bitcoin/market_chart?vs_currency=usd&days=30" response = scraper.get(url) print(response.status_code) print(response.json())
也可以把专用请求库的实例作为会话传给pycoingecko使用。
- 申请CoinGecko官方API密钥
如果是长期高频调用,直接申请CoinGecko的付费API密钥,携带密钥发起的请求不会触发Cloudflare拦截,还能提升接口请求频率上限。 - 更换请求IP或配置代理
当前家庭IP段大概率是被Cloudflare标记为高风险了,可以切换手机热点测试,或者配置代理IP,优先选择住宅代理、低风险的机房IP发起请求。 - 降低请求频率
CoinGecko免费版接口限流为每分钟10-30次,超出阈值也会触发拦截,请求之间加2-3秒的等待间隔即可。
内容的提问来源于stack exchange,提问作者Rod Maniego
相关产品推荐
相关产品推荐

