Repository navigation
Conversation
- Add line-capture-preflight.sh (OS, Chrome/Chromium, Python 3.8+, websocket-client) and have the launcher use its CHROME/PYTHON. - Find the normal Chrome profile per OS; skip unreadable extension folders with a warning instead of aborting. - Start on about:blank; open LINE from the toolbar icon. - Recorder: resume targets held by the debugger, save request bodies (binary included) via Network.getRequestPostData and the on-the-wire headers from requestWillBeSentExtraInfo. - Redact MIDs, picturePath and raw body bytes; parser reads the new fields. - Agent docs: preflight step, no DevTools on the extension during capture. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Keep PYTHON as an array so a path with spaces survives. - Take only the first usable extension dir when Chrome and Chromium both have it. - Reject Windows chrome.exe under WSL instead of passing it WSL paths. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
clins1994
marked this pull request as ready for review
October 24, 2026 19:51
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The capture tooling no longer assumes macOS, and the recorder now saves binary request bodies and the real request headers. Windows (Git Bash) is untested, so please try a capture there.
Les outils de capture de l'extension LINE ne supposent plus macOS, et l'enregistreur sauvegarde désormais les corps de requête binaires et les vrais en-têtes. Windows (Git Bash) n'est pas testé : merci d'y essayer une capture.
🇬🇧 More details
Summary
scripts/line-capture-preflight.shfinds Chrome or Chromium and Python 3.8+ withwebsocket-client. It reportsOKorMISSINGand gives no install commands, so the agent picks the install method for the OS and asks the user first.scripts/line-chrome-capture.shuses the preflight forCHROMEandPYTHON, finds the normal Chrome profile per OS, and starts onabout:blank.scripts/line-cdp-capture.pysaves request bodies and the headers Chrome really sent.scripts/redact-line-capture.pyalso redacts MIDs,picturePathand the raw body bytes..agents/have a preflight step and a warning not to open DevTools on the extension.Why
A real capture of a group rename and avatar change showed these problems:
findon Chrome's Extensions folder failed with "Operation not permitted" and stopped the launcher.index.htmlas a tab behaved differently from the real popup.obs/uploadProfileimage uploads had no saved body, and only three request headers showed.popup.htmlwindows stayed blank, and LINE showed "Debugger paused in another tab".Changes
python3,pythonandpy -3.--print-envprintsCHROME=andPYTHON=.~/Library/Application Support/Google/Chromeon macOS,~/.config/google-chromeor~/.config/chromiumon Linux, and%LOCALAPPDATA%/Google/Chrome/User Dataon Windows.about:blank.LINE_CAPTURE_START_URLstill overrides it.cygpath -wwhen it exists.Runtime.runIfWaitingForDebuggerto targets that wait for the debugger. This fixes the blankpopup.htmlwindows.Network.getRequestPostDatafor every LINE request with a body. It stores size and sha256, and the bytes in base64 in the raw capture only.Network.requestWillBeSentExtraInfoheaders asrequest_extra_headers.scripts/parse-line-traffic.pymerges the extra headers and prints body size and sha256 instead of the bytes.scripts/redact-line-capture.pyredacts the keysmid,chatMid,contactMid,picturePath,pictureStatus,oidandbase64. MIDs after an underscore are now caught too.line-captureandline-implementcommands and theline-implementskill have the preflight step and the DevTools note. DevTools on the extension hits LINE'sdebugger;traps, and the recorder does not need it.How it was tested
bash -non both shell scripts andpy_compileon the recorder.ssh worth-while 'bash -s' < scripts/line-capture-preflight.sh. Both exit 0.CHROME=/usr/bin/trueand a scratch profile. It reaches the Chrome launch step. The "Operation not permitted" folders now print a warning and the run goes on.picturePathand body bytes are redacted.Not tested
cygpathconversion andpy -3are untested.getRequestPostDataresult for real binary uploads, still need a check.🇫🇷 Plus de détails
Summary
scripts/line-capture-preflight.shtrouve Chrome ou Chromium, et Python 3.8+ avecwebsocket-client. Il afficheOKouMISSINGet ne donne aucune commande d'installation : l'agent choisit la méthode adaptée à l'OS et demande d'abord à l'utilisateur.scripts/line-chrome-capture.shprendCHROMEetPYTHONdans le preflight, trouve le profil Chrome habituel selon l'OS et démarre surabout:blank.scripts/line-cdp-capture.pysauvegarde les corps de requête et les en-têtes réellement envoyés par Chrome.scripts/redact-line-capture.pymasque aussi les MID,picturePathet les octets bruts des corps..agents/a une étape de preflight et un avertissement : ne pas ouvrir DevTools sur l'extension.Why
Une vraie capture d'un changement de nom et d'avatar de groupe a montré ces problèmes :
findsur le dossier Extensions de Chrome échouait avec « Operation not permitted » et arrêtait le lanceur.index.htmldans un onglet se comportait autrement que le vrai popup.obs/uploadProfilen'avaient aucun corps sauvegardé, et seulement trois en-têtes de requête apparaissaient.popup.htmlde l'extension, une par groupe, restaient vides, et LINE affichait « Debugger paused in another tab ».Changes
python3,pythonetpy -3.--print-envafficheCHROME=etPYTHON=.~/Library/Application Support/Google/Chromesur macOS,~/.config/google-chromeou~/.config/chromiumsur Linux, et%LOCALAPPDATA%/Google/Chrome/User Datasur Windows.about:blank.LINE_CAPTURE_START_URLla remplace toujours.cygpath -wquand il existe.Runtime.runIfWaitingForDebuggeraux cibles qui attendent le débogueur. Cela corrige les fenêtrespopup.htmlvides.Network.getRequestPostDatapour chaque requête LINE avec un corps. Il stocke la taille et le sha256, et les octets en base64 dans la capture brute seulement.Network.requestWillBeSentExtraInfodansrequest_extra_headers.scripts/parse-line-traffic.pyfusionne les en-têtes supplémentaires et affiche la taille et le sha256 du corps au lieu des octets.scripts/redact-line-capture.pymasque les clésmid,chatMid,contactMid,picturePath,pictureStatus,oidetbase64. Les MID après un tiret bas sont maintenant détectés aussi.line-captureetline-implementet le skillline-implementont l'étape de preflight et la note sur DevTools. DevTools sur l'extension déclenche les piègesdebugger;de LINE, et l'enregistreur n'en a pas besoin.How it was tested
bash -nsur les deux scripts shell etpy_compilesur l'enregistreur.ssh worth-while 'bash -s' < scripts/line-capture-preflight.sh. Les deux se terminent avec le code 0.CHROME=/usr/bin/trueet un profil temporaire. Il atteint l'étape de lancement de Chrome. Les dossiers « Operation not permitted » affichent maintenant un avertissement et l'exécution continue.picturePathet octets du corps sont masqués.Not tested
cygpathetpy -3ne sont pas testés.getRequestPostDatapour de vrais envois binaires, restent à vérifier.🤖 Generated with Claude Code using clins:create-pr