「Webブラウザ(Chrome)」の版間の差分
Notion-MW |
Notion-MW |
||
| (同じ利用者による、間の4版が非表示) | |||
| 19行目: | 19行目: | ||
こうして生成されたショートカットを見ると、(例えばWindowsなら)<code>"C:\Program Files\Google\Chrome\Application\chrome_proxy.exe" --profile-directory=Default --app-id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</code>のようなコマンドラインが設定されているのがわかるだろう。調べた結果、この<code>--app-id</code>というのは、以下のようなプロセスで生成されるようである。 | こうして生成されたショートカットを見ると、(例えばWindowsなら)<code>"C:\Program Files\Google\Chrome\Application\chrome_proxy.exe" --profile-directory=Default --app-id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</code>のようなコマンドラインが設定されているのがわかるだろう。調べた結果、この<code>--app-id</code>というのは、以下のようなプロセスで生成されるようである。 | ||
# アプリのURLを決定する。この際、manifestが指定されていれば、そこにある<code>start_url</code>が使われるようである(たとえばTwitterのを見ると、<code>"start_url":"https://twitter.com/?utm_source=homescreen&utm_medium=shortcut"</code>と書いてある)。また、トップページのときは末尾に<code>/</code>を付ける?(例: <code>https://chat.openai.com/</code>)これらに該当しない場合は普通にそのページのURLがそのまま使われる。 | |||
# URLにSHA-256ハッシュを2度適用し、その前半部分(16進数で32桁)をa-pの16文字で表現する。 | |||
この2.の部分は[https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/web_applications/web_app_helpers_unittest.cc ソースコード]に書いてある[https://play.golang.org/p/VrIq_QKFjiV playground]で試すこともできる。pythonで書くと以下のようになる(URLはコマンドライン引数として渡すことを想定)。 | この2.の部分は[https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/web_applications/web_app_helpers_unittest.cc ソースコード]に書いてある[https://play.golang.org/p/VrIq_QKFjiV playground]で試すこともできる。pythonで書くと以下のようになる(URLはコマンドライン引数として渡すことを想定)。 | ||
< | <syntaxhighlight lang="python">import hashlib | ||
m = hashlib.sha256() | m = hashlib.sha256() | ||
m.update(bytes( | m.update(bytes("https://chat.openai.com/".encode('ascii'))) | ||
m1 = hashlib.sha256() | m1 = hashlib.sha256() | ||
m1.update(m.digest()) | m1.update(m.digest()) | ||
EXTID = ''.join([chr(int(i, base=16) + ord('a')) for i in m1.hexdigest()][:32]) | EXTID = ''.join([chr(int(i, base=16) + ord('a')) for i in m1.hexdigest()][:32]) | ||
print(EXTID)</ | print(EXTID)</syntaxhighlight> | ||
* 参考: [https://stackoverflow.com/questions/26053434/how-is-the-chrome-extension-id-of-an-unpacked-extension-generated/26058672#26058672 How is the Chrome Extension ID of an unpacked extension generated? - Stack Overflow] | * 参考: [https://stackoverflow.com/questions/26053434/how-is-the-chrome-extension-id-of-an-unpacked-extension-generated/26058672#26058672 How is the Chrome Extension ID of an unpacked extension generated? - Stack Overflow] | ||