curlでVRChatにアクセスする

CurlでVRchatにアクセスするメモ

curlのみでアクセスする方法

手順1

Basic認証用のsecretをbase64で生成する。
echo -n ‘your_account_id:password’ | base64

手順2

totp/verifyにアクセスしauthcookieを得る
-d codeはTOTPのワンタイムパスワード(TOTP無効のアカウントで、VRCから6桁の確認コードが来るアカウントはtotp/verifyにアクセスではできない)
curl -v \
-X POST \
‘https://api.vrchat.cloud/api/1/auth/twofactorauth/totp/verify’ \
-H “Authorization: Basic XXXXXX=” \
-d “code=123456” \
2>&1 \
| grep ‘auth=authcookie_’

手順3

APIを叩く
curl -X GET “https://api.vrchat.cloud/api/1/auth/user/friends?offline=false” -H “User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Safari/537.36” -b “apiKey=JlE5Jldo5Jibnk5O5hTx6XVqsJu4WJ26; auth=authcookie_XXXXX”

※2023/5/6追記 : User-Agentが必要と言われるようになったので -Hを追記。正直にCurlと答えるべきなのか嘘でもMozzillaと答えて欲しいのかはわからず…。

備考

2022/12/25に実行し、Expires=Sun, 01 Jan 2023 11:01:11
cookieは一週間しか持たない。

他に試したこととして、2FAを有効にしない状態でログインしようとすると確認コードが記載されたメールが届き、これを入力しないとログインできない。

が、curlでこの確認コードを入れる手段がないため2FAを使わないとAPIが叩けない。なお、確認コードは接続元IPを見ているわけではない。