たくさんの自由帳
Androidのお話
たくさんの自由帳
投稿日 : | 0 日前
文字数(だいたい) : 3533
タイトル通りで、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.com
VPS
の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
で古いバージョンを使ってる説があるIP アドレス
が狙い撃ちされてるとかAWS
だからダメとかCloudflare
に嫌われているとかではなく、単に私のサーバーのバージョンが古いから(Ubuntu 20 / Node.js 16
)一部のサーバーのリクエストが403
になるみたいでした。
なおってよかった