GitHub OpenGraph preview
QUICK LINKS
README
2025年版の高度なアンチ検知対策を備えたX.com(旧Twitter)スクレイピングシステム + React WebUI
twix-saver/
├── frontend/ # React + TypeScript WebUI
│ ├── src/
│ │ ├── components/ # UIコンポーネント
│ │ ├── hooks/ # カスタムフック
│ │ ├── stores/ # Zustand状態管理
│ │ └── types/ # TypeScript型定義
│ └── package.json
├── backend/ # Python FastAPI バックエンド
│ ├── src/
│ │ ├── scrapers/ # スクレイピングエンジン
│ │ ├── services/ # ビジネスロジック
│ │ └── web/ # FastAPI アプリ
│ ├── scripts/ # 管理スクリプト
│ ├── main.py # メイン実行スクリプト
│ └── requirements.txt
└── docs/ # ドキュメント
# 環境変数ファイルを作成
cp backend/.env.example backend/.env
# .envファイルを編集してTwitter認証情報を設定
# Docker Composeで全サービスを起動
docker-compose up -d
# ログ確認
docker-compose logs -f backend
# ルートディレクトリで依存関係をまとめてインストール
pnpm run setup
# バックエンドの環境設定ファイル作成
cd backend
cp .env.example .env
# .envファイルを編集してTwitter認証情報を設定
# MongoDB起動確認
mongosh --eval "db.runCommand({ping: 1})"
# Terminal 1: バックエンドAPI
pnpm run dev:backend
# Terminal 2: フロントエンド
pnpm run dev:frontend
# バックエンドのみ
cd backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# フロントエンドのみ
cd frontend
pnpm install
# 型定義生成
pnpm run generate-types
cd backend
# データベースの待機ジョブを実行
python main.py --run-jobs
# 特定ユーザーを直接スクレイピング(従来方式)
python main.py --users elonmusk jack
# データインジェストのみ
python main.py --ingest-only
# 統計情報表示
python main.py --stats
# MongoDB設定
MONGODB_URI=mongodb://localhost:27017/
MONGODB_DATABASE=twitter_scraper
# Twitterアカウント(使い捨てアカウント推奨)
TWITTER_USERNAME=your_username
TWITTER_PASSWORD=your_password
TWITTER_EMAIL=your_email@example.com
# プロキシ設定(推奨)
PROXY_SERVER=proxy.example.com:8080
PROXY_USERNAME=proxy_user
PROXY_PASSWORD=proxy_pass
# CAPTCHA解決サービス(オプション)
CAPTCHA_SERVICE_API_KEY=your_2captcha_api_key
# systemd サービスインストール
./install_systemd.sh
# サービス状態確認
systemctl --user status twix-scraper.timer
# ログ確認
journalctl --user -u twix-scraper.service -f
# メインアカウント
TWITTER_USERNAME=account1
TWITTER_PASSWORD=password1
TWITTER_EMAIL=account1@example.com
# 追加アカウント
TWITTER_ACCOUNT_1_USERNAME=account2
TWITTER_ACCOUNT_1_PASSWORD=password2
TWITTER_ACCOUNT_1_EMAIL=account2@example.com
TWITTER_ACCOUNT_2_USERNAME=account3
TWITTER_ACCOUNT_2_PASSWORD=password3
TWITTER_ACCOUNT_2_EMAIL=account3@example.com
レジデンシャルプロキシサービスの使用を強く推奨:
PROXY_SERVER=residential-proxy.provider.com:8000
PROXY_USERNAME=your_proxy_username
PROXY_PASSWORD=your_proxy_password
CAPTCHA_SERVICE_API_KEY=your_2captcha_api_key
対応サービス:
{
"id_str": "1234567890",
"username": "elonmusk",
"text": "ツイート本文",
"created_at": "2025-08-24T12:00:00Z",
"public_metrics": {
"like_count": 1500,
"retweet_count": 300,
"reply_count": 50
},
"media_urls": ["https://..."],
"extracted_articles": [...]
}
{
"job_id": "uuid-string",
"target_usernames": ["elonmusk", "jack"],
"status": "completed",
"stats": {
"tweets_collected": 150,
"articles_extracted": 25
},
"created_at": "2025-08-24T12:00:00Z"
}
.envファイルをGitにコミットしないでください# セッションファイルを削除して再試行
rm -rf sessions/
# プロキシ設定を確認
echo $PROXY_SERVER
ping proxy.example.com
# MongoDB起動状況確認
systemctl status mongodb
# または
systemctl status mongod
# ブラウザを再インストール
source venv/bin/activate
playwright install
playwright install-deps # Linux
# コードアップデート
git pull origin main
# 依存関係アップデート
source venv/bin/activate
pip install -r requirements.txt --upgrade
# Playwrightブラウザ更新
playwright install
# systemdサービス再起動
systemctl --user daemon-reload
systemctl --user restart twix-scraper.timer
# 統計確認
python main.py --stats
# リアルタイムログ
journalctl --user -u twix-scraper.service -f
# ディスク使用量
du -sh data/ logs/
db.tweets.stats()htop, iotopnethogs, iftopgit checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)このプロジェクトは研究・教育目的で公開されています。商用利用や大規模なデータ収集を行う前に、必ずX.comの利用規約を確認してください。
免責事項: このツールは教育・研究目的で提供されます。利用者はX.comの利用規約および適用される法律を遵守する責任があります。