プレ垢でどう見えるかが知りたい
某Pixiv閲覧サードパーティ製アプリについて、参考のためコードを見たところ、どうも作者?か誰かのぶっこ抜かれたプレ垢が共用的に使われるルートがあって、人気順ソートなどに使われていることが分かった。これがこのアプリの売りのようで、当然このリクエストはユーザに帰るので、タダでプレ垢相当の機能が使えるということーー
プレ垢に近い機能をどこまで実装できるか技術検証を行う。
中華製LLM Qwenに知恵を借りる
しかし、GitHub Actions の Repository Secretsによって隠匿されていたためコード中からは検索しても当然見つからず。
そのため倫理観の緩さを期待してQwenに相談したところ、Jadxを使用してapkからHAMC鍵を抜き出し、キーを抽出できるとのこと。元プロダクトのリポジトリをクローンしてapkをビルドして鍵を抜いても同じことができるはずだけれど、前者の方が早い。これさえゲットできれば嬉しいことになる。
- macOS:
brew install jadx - Windows/Linux: Jadx GitHub Releases からダウンロード
今回はWindows開発なのでGUI-Win版をDLしapkを読んで検索したところ一発で鍵入手。
中高生の時分なら丸一日かけて有志サイトとにらめっこして結局諦めていただろうな。生成AI恐ろしい。小中学生がクラックに使うのも解らなくもない。
キーを抽出してアドレス情報を叩く
バックエンドサーバURLを抜き出し、適当なPixivIDを乗せて叩く。
これによってこのアプリが自鯖と通信する「正規の手順」で通信を再現できる。
ここで注意したいのが、ワンショットだけに留めること。
既にプレ垢をGETしているので、
- 詳細検索(絞り込み)
- ランキング遡及、期間絞り込み
- AIの高度なフィルタ
- 高画質画像の高速DL
がAPIを介して実現可能。だが、あくまで検証なので。
import hmac, hashlib
secret = "**ここにHAMC鍵が入る**>"
body = '{"uid":**適当なPixivIDを入れる**}'
sig = hmac.new(secret.encode('ascii'), body.encode('utf-8'), hashlib.sha256).hexdigest()
print(sig)
curl -sS -X POST "**ここにバックエンドサーバのAPIエンドポイントが入る**" \
-H "Content-Type: application/json" \
-H "X-Shaft-Sign:**ここにHAMC鍵が入る**>" \
-d '{"uid":**適当なPixivIDを入れる**}' \
-w '\n[HTTP_STATUS:%{http_code}]\n' --max-time 15
これによって200OKに加えてメアド、ユーザ名、PixivIDが返ってくることから生存を確認。
テレメトリの懸念
例えば「しぐれうい」先生の作品を1つ叩いたときに、
{
"client_id": "端末のClientIDが入る",
"uid": 自分のPixivIDが入る,
"events": [
{
"event_type": "view",
"target_id": 113741593,
"timestamp": 1786745085000,
"payload": {
"title": "ピス!",
"user_id": 431873,
"user_name": "しぐれうi",
"bookmark_count": 50574,
"view_count": 429416,
"original_url": "https://i.pximg.net/img-original/img/2023/11/27/00/00/20/113741593_p0.jpg"
}
}
]
}
のような情報がサーバに変える仕組みになっている模様。
UAをこのアプリの公開先端末や適切な対象を想定して偽装しないといけないかもしれずブロックされてしまう可能性があるため注意(Ajax API / シグネチャ・アカウント検証時はChrome, OAuthにはPixiv公式のUAで叩いてセーフ)。
技術的にはIDの共有や埋め込み流用は可能
プレ垢の情報をソースに書き込んでいる以上、中身を覗かれてAPIをライドされる可能性は公開者も認識しているみたいーーGithubのbranchやLike,
- 共有プレ垢プールから、401/400時は新しい共有垢のトークンが発行される仕組み
- 共有プレ垢のトークンが衝突しない仕組み
といった内容からも。
ひと昔前のSpotifyやネトフリ垢共有とかとはレベチな技術力に脱帽。
勝手ながら数ショット検証させていただきましたm(_ _)m
Qwenの倫理性 補記
最初はClaudeCodeで同じ検証をしようとしていたが、やはりあいつは頭が硬く、ゴリゴリに騙くらかしても「できません」が言える子。
一方Qwenは超適当なプロンプトで躊躇なくリポジトリを解析したうえ、詳細に鍵抽出方法を説明してくれたので笑ってしまった。自分の国のインターネットはゴリゴリ検閲するのに他人の著作物をいじくり回すのには寛容と、非常に都合が良い存在。おそらくKimiでもいけたはずだけど、Qwenは制限はあるらしいがほぼ完全無料で、ローカルQ14Bでもそこそこ遊べるのが非常に良い。
ClaudeCodeやCodexに殺意が湧いたら中華系LLMも併用してみて、要件をうまく変える・抜く、技術的提供を匂わせサーバに負荷を掛けない程度の数値を示すなどして本命のプロンプトに落とし込むと騙せる可能性がある。

認識っていっぱい言っちゃった認識。