Skip to main content

Twitter/X API 客户端库 (Rust 实现, 提供 Python 绑定)

Project description

x-api-rs

X/Twitter Web 私有 API 的 Rust 核心库、Python 绑定和 CLI 工具。

当前架构

本仓库已经拆分为 Rust workspace:

src/core  # x-api-core:真实业务实现
src/py    # x-api-py:Python 绑定
src/cli   # x-api-cli:命令行工具,二进制名 x-api

核心协议边界统一放在 x_api_core::web。XChat 是 Web 协议下的复杂子域,位于 web::xchat

Rust 用法

use x_api_core::web::{WebClient, WebProfile};

#[tokio::main]
async fn main() -> x_api_core::Result<()> {
    let cookies = "ct0=xxx; auth_token=yyy; twid=u%3D123456789";
    let client = WebClient::builder()
        .cookies(cookies)
        .profile(WebProfile::default_latest())
        .build()
        .await?;

    let result = client.dm().send_message("123456789", "hello", None).await?;
    println!("{result:?}");
    Ok(())
}

Python 用法

from x_api_rs.web import Client, WebProfile

client = await Client.create(
    cookies,
    proxy_url=None,
    profile=WebProfile.default_latest(),
)

# 只有 auth_token、还没有完整 cookies 时,先换取 cookies 再创建客户端:
res = await Client.auth_token_to_cookies(auth_token, proxy_url=None)
client = await Client.create(res.cookies)  # res.cookies 含 auth_token + ct0 + twid

Web 环境快照

WebEnvironmentSnapshot 可把 cookies、CSRF、auth token、user id、代理、WebProfile、UA/请求头策略、ClientTransaction 材料和可选 XChat keystore 材料导出为 JSON,适合存入数据库后下次离线还原客户端。

快照是明文敏感数据,包含可直接恢复账号会话的 cookies/token,启用 XChat 时还可能包含私钥材料。生产环境应由调用方使用数据库加密、KMS 或应用层加密后存储。

let snapshot_json = client.export_environment()?.to_json()?;
let restored = WebClient::restore_environment(WebEnvironmentSnapshot::from_json(&snapshot_json)?)?;
snapshot_json = client.export_environment_json()
restored = Client.restore_environment_json(snapshot_json)

CLI 用法

x-api --cookies-file cookies.txt dm send --user-id 123 --text "hello"
x-api --cookies-file cookies.txt environment export --allow-plaintext-secrets > state.jsonl
x-api environment restore-check --state-file state.json
x-api auth token-to-cookies --token <auth_token> --allow-plaintext-secrets
x-api version-full
x-api output-schema

CLI 输出保持 JSONL envelope,适合 agent、脚本和管道消费。

验证命令

cargo check --workspace --all-features
cargo test -p x-api-core --all-features --no-run
cargo test -p x-api-cli --all-features

Python wheel 构建需要安装 maturin

python3 -m maturin build --manifest-path src/py/Cargo.toml --features "dm upload inbox user posts communities settings search xchat"

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

x_api_rs-3.0.7.tar.gz (248.2 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

x_api_rs-3.0.7-cp38-abi3-manylinux_2_28_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.28+ x86-64

x_api_rs-3.0.7-cp38-abi3-manylinux_2_28_aarch64.whl (5.1 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.28+ ARM64

File details

Details for the file x_api_rs-3.0.7.tar.gz.

File metadata

  • Download URL: x_api_rs-3.0.7.tar.gz
  • Upload date:
  • Size: 248.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for x_api_rs-3.0.7.tar.gz
Algorithm Hash digest
SHA256 ad28f78462be849c83167229558bb065b72eb070c6d3451e59928ef679137de3
MD5 bfcfe6b8d32148c4026933d2c25282a8
BLAKE2b-256 56e2d7798d2da67a7211c88c8181a5e4567149ebcc73b4ec0493158348438997

See more details on using hashes here.

File details

Details for the file x_api_rs-3.0.7-cp38-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for x_api_rs-3.0.7-cp38-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8a5b48a3a2c1e677e460ffa2ed8ab361f3fb8144f14fa282bb2c4cbe21f7b39d
MD5 8066685a970d9ba85ef4a67951352617
BLAKE2b-256 5b4c66063cdaeee0beb2ece6101ab8f0144429b7ba404bc865748fc4134c23db

See more details on using hashes here.

File details

Details for the file x_api_rs-3.0.7-cp38-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for x_api_rs-3.0.7-cp38-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 775618814da171801a916a654598b624d61f20c15e40da8f361e5381aa78d3ec
MD5 6b5988ffc9e5a7db6a364bc28df6d95e
BLAKE2b-256 7e9003e27238805e853bd0d1b7f1d46b45e72e9018b5ac4935c6f8b62f4d5653

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page