TransWikia.com

Twitterの投稿URLにリクエストした際のレスポンスを判別する方法を教えてください

スタック・オーバーフロー Asked by tatsukishiga on September 1, 2021

前提・実現したいこと

ひと月分の会員がつぶやいた投稿URLを抽出して
各投稿が有効性なのかを確かめたいです。
具体的には、

https://twitter.com/アカウント名/status/投稿のID
が有効で投稿が表示されてるなら、200番のOK

https://twitter.com/アカウント名/status/投稿のID
が非公開アカウントであれば、302番のリダイレクト

https://twitter.com/アカウント名/status/投稿のID
が見つからないであえば、404番のnot found

というような感じで判別したいです。

発生している問題・エラーメッセージ

  • ひと月分の会員がつぶやいた投稿URLを抽出
    →こちらに関しては問題なくできています。
  • 各投稿の有効性
    →4ヶ月ほど前は以前使用していた、チェックを行うphpファイルで判別できていましたが、
    現在Twitterの仕様が変わったのか、全て200番で返ってきてしまいます。

該当のソースコード

以前まではこの関数で取得し、判別できていました。

   @get_headers();

試したこと

  • レスポンスヘッダー全てをチェックしてみる→特に有用な情報なし
  • get_headers の引数を変えてみる→変化なし
  • リダイレクト先URLを取得する方法をググってみる→get_header でできるらしいけど、
    たぶん200で返ってきてるからヘッダーにリダイレクト先URLが含まれない
  • curl -I コマンドで投稿IDの部分を適当な文字列を入力→200で返ってくる。

補足情報(FW/ツールのバージョンなど)

他に必要な情報等ございましたら、言っていただけると助かります!

One Answer

4ヶ月ほど前は以前使用していた、チェックを行うphpファイルで判別できていましたが、
現在Twitterの仕様が変わったのか、全て200番で返ってきてしまいます。

この点について、2020年初頭あたりから Twitter web の挙動が変わったのが関係しているはずです。

お行儀よく(つまり、Twitter のサーバーに必要以上の負荷をかけずに)状態を確認するためには、Twitter API の使用を検討してください。たとえばツイートの存在確認であれば GET statuses/show/:id や GET statuses/lookup が使えます:

ただし protected user かどうかは別途 API で判定する必要があります。

Answered by nekketsuuu on September 1, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP