### 前提・実現したいこと

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

[https://twitter.com/アカウント名/status/投稿のID](https://twitter.com/%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E5%90%8D/status/%E6%8A%95%E7%A8%BF%E3%81%AEID)  
が有効で投稿が表示されてるなら、２００番のOK

[https://twitter.com/アカウント名/status/投稿のID](https://twitter.com/%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E5%90%8D/status/%E6%8A%95%E7%A8%BF%E3%81%AEID)  
が非公開アカウントであれば、３０２番のリダイレクト

[https://twitter.com/アカウント名/status/投稿のID](https://twitter.com/%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E5%90%8D/status/%E6%8A%95%E7%A8%BF%E3%81%AEID)  
が見つからないであえば、４０４番のnot found

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

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

  * ひと月分の会員がつぶやいた投稿URLを抽出  
→こちらに関しては問題なくできています。

  * 各投稿の有効性  
→４ヶ月ほど前は以前使用していた、チェックを行うphpファイルで判別できていましたが、  
現在Twitterの仕様が変わったのか、全て２００番で返ってきてしまいます。

### 該当のソースコード

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

```

       @get_headers();
    
```

### 試したこと

  * レスポンスヘッダー全てをチェックしてみる→特に有用な情報なし
  * `get_headers` の引数を変えてみる→変化なし
  * リダイレクト先URLを取得する方法をググってみる→`get_header` でできるらしいけど、  
たぶん200で返ってきてるからヘッダーにリダイレクト先URLが含まれない

  * `curl -I` コマンドで投稿IDの部分を適当な文字列を入力→２００で返ってくる。

### 補足情報（FW/ツールのバージョンなど）

他に必要な情報等ございましたら、言っていただけると助かります！
CC BY-SA 4.0
2020-07-15T09:42:07.343
68611
2020-07-17T10:03:56.260
2020-07-16T23:30:29.490
2808
41105
question
php http twitter curl
Twitterの投稿URLにリクエストした際のレスポンスを判別する方法を教えてください
> ４ヶ月ほど前は以前使用していた、チェックを行うphpファイルで判別できていましたが、  
>  現在Twitterの仕様が変わったのか、全て２００番で返ってきてしまいます。

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

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

  * <https://developer.twitter.com/en/docs/tweets/post-and-engage/api-reference/get-statuses-show-id>
  * <https://developer.twitter.com/en/docs/tweets/post-and-engage/api-reference/get-statuses-lookup>

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

  * <https://developer.twitter.com/en/docs/accounts-and-users/follow-search-get-users/api-reference/get-users-show>
CC BY-SA 4.0
2020-07-17T10:03:56.260
68678
2020-07-17T10:03:56.260
19110
68611
answer