如何获取400万Twitter用户粉丝数?API认证遇215错误求方案
解决Twitter API 1.1认证错误及大规模数据采集问题
一、修复"215 Bad Authentication data"错误
以下是排查和解决该认证错误的具体步骤:
修正OAuth参数格式:官方文档中的
"是HTML转义的双引号,实际执行curl命令时需替换为普通双引号,否则会导致参数解析错误。修正后的curl命令示例:curl --request GET --url 'https://api.twitter.com/1.1/users/lookup.json?user_id=783214,6253282' \ --header 'authorization: OAuth oauth_consumer_key="YOUR_CONSUMER_KEY", oauth_nonce="RANDOM_STRING", oauth_signature="GENERATED_SIGNATURE", oauth_signature_method="HMAC-SHA1", oauth_timestamp="UNIX_TIMESTAMP", oauth_token="YOUR_ACCESS_TOKEN", oauth_version="1.0"'确保参数动态且有效:
oauth_nonce:每次请求需生成唯一的随机字符串(如16位随机字母数字组合),不能重复使用oauth_timestamp:当前Unix时间戳(秒级),需确保请求发起时时间戳在当前时间±5分钟内,避免过期oauth_signature:必须通过HMAC-SHA1算法动态生成,手动计算极易出错,建议使用成熟的OAuth库自动处理签名逻辑,示例Python代码:import requests from requests_oauthlib import OAuth1 consumer_key = "YOUR_CONSUMER_KEY" consumer_secret = "YOUR_CONSUMER_SECRET" access_token = "YOUR_ACCESS_TOKEN" access_token_secret = "YOUR_ACCESS_TOKEN_SECRET" auth = OAuth1(consumer_key, consumer_secret, access_token, access_token_secret) url = "https://api.twitter.com/1.1/users/lookup.json" params = {"user_id": "783214,6253282"} response = requests.get(url, auth=auth, params=params) print(response.json())
验证权限与账号状态:
- 确认你的Basic计划账号已在开发者平台开启
users/lookup接口权限,进入「Projects & Apps」→「Your App」→「Permissions and features」检查 - 查看账号是否存在违规记录或API限制,开发者平台的「Dashboard」会显示账号状态
- 确认你的Basic计划账号已在开发者平台开启
二、提升大规模数据采集效率(400万用户粉丝数)
针对Basic计划的速率限制,可通过以下方式优化采集效率:
- 最大化批量请求:
users/lookup接口单次最多支持传入100个user_id,每次请求都传满100个用户,可将请求次数减少至原来的1/100。按Basic计划的900请求/15分钟限制计算,每天可采集约864万用户数据,完全覆盖你的400万需求 - 严格控制速率:用代码实现速率限制逻辑,比如Python的
time.sleep()控制请求间隔,确保15分钟内请求数不超过900次,避免触发封禁 - 学术研究特殊申请:如果是用于非商业学术研究,可尝试向Twitter提交学术权限申请,说明项目进展和数据需求,部分情况下官方会为学术项目开放更高的速率限制或临时权限
三、是否还有其他可行方案?
目前第三方未授权的采集工具已基本无法正常工作,Twitter对未认证请求的限制极严。因此优先解决API认证问题并优化批量采集逻辑,是当前最可行的路径。
内容的提问来源于stack exchange,提问作者William Abma
相关产品推荐
相关产品推荐

