如何在 Python 中无需 API Key 抓取 Twitter/X(2026 指南)
看起来您只提供了来源链接,而没有提供需要翻译的正文内容。请把要翻译的文本(包括标题、段落、列表等)贴在这里,我会按照要求保留链接、代码块和格式进行简体中文翻译。谢谢!
为什么使用 Scweet 而不是官方 API?
Twitter/X 的官方 API 现在起价 $200 / 月 仅用于读取推文。免费层是 仅写 —— 你可以发推,但无法搜索、拉取时间线,或读取除自己个人资料外的任何内容。
Scweet 通过复用网页应用内部使用的相同 GraphQL 端点,绕过了 API 密钥的需求。它使用与你的浏览器相同的 cookie(auth_token 和 ct0)发送 HTTP 请求,因此在 X 看来这就是普通的浏览器活动。
- 不需要无头浏览器、Selenium 或 Playwright。
- 本地运行 $0(或在托管云版本上约 $0.30 / 1 000 条推文)。
- 只需一个免费 X 账户,加上可选的代理即可使用。
Twitter/X API pricing (2026)
| 级别 | 价格 (美元) | 您将获得什么 |
|---|---|---|
| 免费 | $0 | 仅写入。每月 500 条推文。无搜索,无读取权限。唯一端点:GET /2/users/me |
| 基础 | $200/月 | 每月 15 000 次读取请求。7 天的搜索历史 |
| 专业 | $5 000/月 | 100 万条推文。完整存档搜索 |
| 企业 | $42 000+/月 | 定制,合规流 |
| 按量付费(2026年2月) | ~ $575/月(相当于基础计划使用量) | 不比基础计划更便宜 |
来源:TechCrunch, X Developer Community, xpoz.ai pricing breakdown.
安装
pip install -U scweet获取 auth_token
- 在 Chrome 或 Firefox 中登录 x.com。
- 打开开发者工具 (F12) → Application → Cookies →
https://x.com。 - 找到
auth_tokencookie 并复制其值。
Scweet 会自动从该 cookie 引导 ct0 CSRF 令牌,因此你只需要 auth_token。它的有效期可达数周至数月;当它过期时,Scweet 会抛出 AuthError。
基本用法 (Python)
from Scweet import Scweet
s = Scweet(
auth_token="YOUR_AUTH_TOKEN",
proxy="http://user:pass@host:port" # optional but recommended
)
# Search for tweets about Bitcoin from 2025 onward
tweets = s.search(
"bitcoin",
since="2025-01-01",
limit=200,
save=True # writes results to a CSV file
)
print(f"Collected {len(tweets)} tweets")您可以更改输出格式:
s.search("bitcoin", limit=100, save=True, save_format="json") # JSON
s.search("bitcoin", limit=100, save=True, save_format="both") # CSV + JSON每条推文记录包括:
tweet_id,timestamp,text,likes,retweets,comments,tweet_urluser(screen_name, name)image_links- 完整的原始 GraphQL 负载(如有需要)
CLI 用法(无 Python 代码)
scweet --auth-token YOUR_AUTH_TOKEN \
--proxy http://user:pass@host:port \
search "bitcoin" --since 2025-01-01 --limit 200 --save可用端点
| Endpoint | Description |
|---|---|
s.search() | 全文推文搜索 |
s.get_profile_tweets(usernames, limit=…) | 用户自己的推文时间线 |
s.get_followers(usernames, limit=…) | 粉丝列表 |
s.get_following(usernames, limit=…) | 正在关注的列表 |
s.get_user_info(usernames) | 个人简介、粉丝数、认证状态、创建日期 |
所有方法接受 用户名列表,支持批量请求。还提供了异步变体(asearch()、aget_profile_tweets() 等)。
多账户池化
对于更大的抓取,你可以轮换多个账户,每个账户都有自己的代理:
[
{
"username": "account_1",
"cookies": { "auth_token": "TOKEN_1" },
"proxy": "http://user1:pass1@host1:port1"
},
{
"username": "account_2",
"cookies": { "auth_token": "TOKEN_2" },
"proxy": "http://user2:pass2@host2:port2"
}
]s = Scweet(cookies_file="cookies.json")
tweets = s.search("AI startups", limit=10000, save=True)Scweet 将池状态存储在 SQLite 中(leases、heartbeats、daily counters、cooldowns),并在账户达到限制时自动进行故障转移。
恢复中断的抓取
tweets = s.search("AI startups", limit=10000, save=True, resume=True)resume=True 会从上一次运行结束的地方继续。
Apify actor 集成(无代码)
Scweet 也可以作为 Apify actor(altimis/scweet)使用。托管版提供免费层(每日最多 1 000 条推文),并可按 $0.25 / 1 000 条推文 的价格扩展至数百万条。
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("altimis/scweet").call(run_input={
"search_query": "bitcoin",
"max_items": 500,
})
tweets = client.dataset(run["defaultDatasetId"]).list_items().items
print(f"Got {len(tweets)} tweets")这对于管道、cron 作业或 n8n/Zapier 工作流非常便利,无需管理 Python 依赖或 Cookie。
Resources
- GitHub 仓库: (MIT 许可证,250+ 测试)
- PyPI 包:
pip install scweet - Apify actor: (托管,无代码)
- 完整文档: