hack のためのネタ帳, etc,,,

×

まとめ

は検索クエリを XmlHttpRequest で投げる際のパラメータにローカル PC の RTC から生成した現在時刻の timestamp が含まれてるんだけど、
60 秒経過したクエリは無効なクエリとして弾かれるため
PC の時計が 60 秒以上遅れていると
Request failed with status code 502 [ERR_BAD_RESPONSE]
でエラーになって検索出来ない。


経緯

が 502 吐いて検索出来ないと相談を受けた。

自分の環境では問題かったので、
たまたま検索したタイミングで、NIHR のバックエンドがトラブってたんじゃね?
もう直ってるっしょ?
みたいな返事したら、
ノートは問題ないけどデスクトップだとエラーになるとかなんとか。

んなアホな!!!
ってことで調べてみた


状況


XmlHttpRequest で投げた検索クエリを JSON で受け取ってて、
Firefox で cURL 吐かせてみたらこんな感じ。

curl 'https://www.crd.york.ac.uk/PROSPERO/api/search' \
-X POST \
-H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0' \
-H 'Accept: application/json, text/plain, */*' \
-H 'Accept-Language: ja,en-US;q=0.7,en;q=0.3' \
-H 'Accept-Encoding: gzip, deflate, br, zstd' \
-H 'Content-Type: application/json' \
-H 'prospero-auth-token: MTc0Mzc2MjA3NTEyMQ==' \
-H 'Origin: https://www.crd.york.ac.uk' \
-H 'Connection: keep-alive' \
-H 'Referer: https://www.crd.york.ac.uk/PROSPERO/search' \
-H 'Sec-Fetch-Dest: empty' \
-H 'Sec-Fetch-Mode: cors' \
-H 'Sec-Fetch-Site: same-origin' \
-H 'Priority: u=0' \
--data-raw '{"term":"nurse","page":1,"nperpage":20,"sort":"TI","sortorder":"ASC","filters":[],"download":false,"actual":"nurse"}'

このクエリ、約 60 秒くらいで無効になるんだけど、
無効になる原因は

-H 'prospero-auth-token: MTc0Mzc2MjA3NTEyMQ==' \

の部分らしく、毎回異なる値がセットされる。

末尾「==」なので base64 じゃね?って事で、

$ echo MTc0Mzc2MjA3NTEyMQ== | base64 -d | xxd
00000000: 3137 3433 3736 3230 3735 3132 31         1743762075121

ってしてみたら、UNIX time じゃね?って感じだったので、

$ date -d @1743762075121
Sun Aug 15 19:12:01 JST 57227

西暦がおかしいので、多分ミリ秒かなって事で末尾 3 桁削ると

$ date -d @1743762075
Fri Apr  4 19:21:15 JST 2025 

みたいな感じで、ミリ秒単位の UNIX time であることが確定。

って事で、PC の時計 60 秒以上遅れてるんじゃね?ってのが結論だった。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます