たくさんの自由帳
Androidのお話
たくさんの自由帳
投稿日 : | 0 日前
文字数(だいたい) : 3535
タイトル通りで、curlだと200で成功するリクエストが、適当な言語(今回はNode.js)のHTTP クライアントを使ってリクエストしようとすると、なぜか403でエラーになる件の調査をしました。
Node.jsのバージョンが古かった...Node.js 16だとリクエストに失敗しますが、18にしたら治りました。なぜ...
Misskeyを建てたMisskeyから一部のサーバーのユーザーを検索できない事がわかった
403エラーになっているVPSのcurlでも失敗しているWindowsマシンではリクエストが成功する
ユーザーエージェント付けたら動いた
curl -H 'User-Agent: @takusan_23' https://example.comVPSのIPアドレスがブラックリスト入りしてると考えるMisskeyサーバーはCloudflareでプロキシしているはず...
Cloudflareを疑うmisskey.ioなど、Cloudflareを使っている(であろう)サーバーのユーザーをフォローできている
Cloudflareか?
グローバルIPアドレスを変更してみる
AWS Lightsailなら静的IPのデタッチしてアタッチすると新しいのが降ってくる
AWSが狙い撃ちされているのではと考える--- 挫折 ---
AWS CloudShellというサービスがあることに気付く
Linuxマシンみたいなやつ
Linuxしか用意されてないアプリとかを入れておくと良さそう
Windowsだと使えないから~EC2 / Lightsail建てて使いたいLinuxアプリを入れる!みたいなことが回避できるcurlとか検証用のツールを入れておくと良いのかなAWS CloudShellでcurlしてみる
AWS Lightsailが狙い撃ちされているのではと考える他に案がないため一旦あきらめる
Cloudflare が .dev のトップレベルドメインをサポートするCloudflareでプロキシ(Cloudflare DNSを使う)すればIPアドレスがブラックリスト入りされてるのも治るのではと予測
挫折。ぐぬぬ
EC2で建てたらどうなるのか試したくなる
AWSで動かしているサーバーがあってもおかしくないはずVPCとかサブネットマスクとかCIDRとか意味わかんないから避けてた
デフォルト VPCがあるのでそれにEC2を追加すれば良いことが判明セキュリティグループで必要最低限のポートだけ開けるようにする などUbuntu 20.04で借りてみる
Amazon LinuxはCentOS系列?らしくパッケージマネージャーがaptじゃないらしい。ので選ばなかったAWSが狙い撃ちされているのではとまた考えるLinux ディストリビューションを選ぶとどうなるか見てみる
Linux ディストリビューションがUbuntuだとアクセスできないIPアドレスが払い出されるのではと考えたAmazon Linuxにしてみました。最新版でAmazon Linux 最新版だとcurlのリクエストが通ることが判明
OSの違いでリクエストの成功に影響するのか...?と考えるUbuntu 22.04 (記述時時点最新版)で試す
curlのリクエストが通るNode.js 16を入れて、リクエストするコードを試してみる
IP アドレスは関係ない。事が判明
AWSだからダメではないcurlリクエストと同じようにHTTP クライアントのリクエストヘッダーを書いた
curlに-vをつけるとリクエストの詳細が見えます
IP アドレスがブロックされていないことがわかったため、今度はリクエストヘッダーが悪いのではと
curlが付けているものと同じにしてみるNode.jsのHTTPクライアントライブラリが悪いのではと疑い始める
axios、node-fetch、got、Node.js に最初からあるやつを試すも403になる
requestってもう非推奨だったんですね... ;;curlでは通ってるのに...!--- 挫折 ---
いや、流石にこんな事あるか?でもMastodon / MisskeyのIssueも見たけどないんだよな。(webfingerとかいうユーザーを探すプロトコルがあるらしい)Cloudflareがどうやら弾いてるらしい?のでMastodon / Misskeyは関係ないやろと思ったけどなんか1件くらいヒットしてもおかしくないと思うんだけどな...
Node.jsのバージョンを疑い始める
Misskeyバージョンアップの記事(忘れた...)Ubuntu 20 -> 22にしたらcurlのリクエストが通るようになったのはネットワークスタック周りで更新があったのではと考えるNode.jsも更新すれば内部のネットワークスタックが更新され通るようになるのではという予測
Issueがないの、私のお一人様はUbuntu 20 / Node.js 16で古いバージョンを使ってる説があるなおってよかった