🕊️ よりオープンなインターネットへの本文送り
きっかけは、@geekbb さんが Warp について紹介したtweetを見たことです。Warp は長い間リリースされていますが、IP プライバシーの保護に関しては iCloud Private Relay ほど便利ではありませんし、私自身もマジックインターネットへのニーズはありませんでした。しかし、IP を隠す必要があることに気づきました。
RSSHub の開発の数年間で、公共の API を提供しているサイトは非常に少ないことがわかりました。多くのサイトでは、プラットフォームのコンテンツの取得を制限するために厳格なスクレイピング制御を採用しています。一部のサイトでは、同じ IP からのリクエストが多すぎるとブロックされる場合があり、他のサイトでは一般的なクラウドサーバープロバイダーの IP アドレスを完全にブロックしています。そのため、最新の数件のコンテンツ更新を取得するだけでも非常に困難になってしまいます。
このような場合、プロキシを使用する必要がありますが、専用のウェブスクレイピングプロキシは通常高価でコストパフォーマンスが非常に低いです。RSSHub が Cloudflare WARP の無制限のトラフィックと豊富な IP リソースを利用できれば素晴らしいです。RSSHub はすでに一般的なプロキシプロトコルをサポートしており、WARP を一般的なプロキシにラップするだけで利用できます。
公式クライアントをコマンドライン環境で直接使用することはできませんが、このようなアイデアは他の人によってすでに実装されているはずです。私は GitHub でラップされた Docker を見つけました。
そして、RSSHub のdocker-compose.yml
にこのようなサービスを追加するだけでプロキシサービスを有効にすることができます。
warp-socks:
image: monius/docker-warp-socks:latest
privileged: true
volumes:
- /lib/modules:/lib/modules
cap_add:
- NET_ADMIN
- SYS_ADMIN
sysctls:
net.ipv6.conf.all.disable_ipv6: 0
net.ipv4.conf.all.src_valid_mark: 1
healthcheck:
test: ["CMD", "curl", "-f", "https://www.cloudflare.com/cdn-cgi/trace"]
interval: 30s
timeout: 10s
retries: 5
最後に、RSSHub に PROXY_URI 環境変数を追加してプロキシを使用します。
PROXY_URI: 'socks5h://warp-socks:9091'
私はよく使う hotukdeals ルート(英国版の何が買い値か)をテストに選びました。このサイトはすべての DigitalOcean の IP をブロックしているため、常に 403 の状態になっています。
WARP を追加すると、正常にアクセスできます。
さらに、WARP を再起動するたびに新しい IP が出力されることに気づきました。時間がないため検証することはできませんが、IP は頻繁に自動的に変更されるはずであり、これはスクレイピングの問題の解決にとって良いニュースです。
さらに、WireGuard の設定をカスタマイズすることもできます。有料版の WARP + やカスタムエンドポイントを使用して、より良い結果を得ることができます。
WireGuard の設定ファイルの生成には、次のリンクを使用できます。
WARP + トラフィックのリフレッシュとエンドポイントのフィルタリングには、次のリンクを使用できます。
WARP + の速度には明確な違いがないという意見もありますが、スクレイピングの効果にはさらなる検証が必要です。
すべてが順調にいけば、RSSHub の公式インスタンスで厳格なスクレイピングのルートを再利用できるはずです。数日以内に検証し、ここで更新します。