Tracks Slack webpack bundle changes.
The miner reads Slack's authed client HTML, extracts the current build metadata and webpack chunk list, downloads the public CDN chunks, and writes the results into build/. Each mined build becomes a commit and tag for your convenience.
datamine.js dumps to build/ on each run and dumps the following:
chunks.txt and meta.jsonThis is an archaic ass setup, but the intended strategy is to have a logged-in Slack desktop client exposing the Chrome DevTools Protocol on port 9222.
bin/watch-cdp.sh continuously peeks at the client HTML into
queue/html/.bin/poll.sh mines queued snapshots in capture order, commits build/, tags
the build, and optionally pushes.bin/snapshot-cdp.js captures one Slack client snapshot through CDP.bin/reload-cdp.js reloads or navigates the Slack renderer and reports the
ready build.Create local config:
cp .env.example .env
Mine from a saved Slack client HTML file:
node datamine.js --html page.html
Mine from a live Slack CDP instance:
node datamine.js --port 9222
Queue one snapshot and mine it through the normal poller path:
node bin/snapshot-cdp.js --port 9222 --dir queue/html --fetch-client
bash bin/poll.sh
For quick extractor checks:
node datamine.js --html page.html --limit 40
node datamine.js --port 9222 --loaded-only
Systemd can help automate things, the checked-in units run Slack under Xvfb, keep CDP available, watch for new client snapshots, and mine the queue every 30 seconds. Adjust as needed, then install and start:
install -m 0644 systemd/slack-xvfb.service /etc/systemd/system/slack-xvfb.service
install -m 0644 systemd/slack-cdp.service /etc/systemd/system/slack-cdp.service
install -m 0644 systemd/slack-datamine-watch.service /etc/systemd/system/slack-datamine-watch.service
install -m 0644 systemd/slack-datamine.service /etc/systemd/system/slack-datamine.service
install -m 0644 systemd/slack-datamine.timer /etc/systemd/system/slack-datamine.timer
systemctl daemon-reload
systemctl enable --now slack-xvfb.service slack-cdp.service
systemctl enable --now slack-datamine-watch.service slack-datamine.timer
Useful commands:
systemctl status slack-datamine-watch.service --no-pager
systemctl status slack-datamine.timer --no-pager
journalctl -u slack-datamine-watch.service -u slack-datamine.service -f
Set GIT_PUSH=1 in da .env if you want to push commits and tags.
meta.json and skipped after retries.2,121 commits
Hacker News (1)
JavaScript
67.4%
Shell
32.6%
Tracks Slack webpack bundle changes.
The miner reads Slack's authed client HTML, extracts the current build metadata and webpack chunk list, downloads the public CDN chunks, and writes the results into build/. Each mined build becomes a commit and tag for your convenience.
datamine.js dumps to build/ on each run and dumps the following:
chunks.txt and meta.jsonThis is an archaic ass setup, but the intended strategy is to have a logged-in Slack desktop client exposing the Chrome DevTools Protocol on port 9222.
bin/watch-cdp.sh continuously peeks at the client HTML into
queue/html/.bin/poll.sh mines queued snapshots in capture order, commits build/, tags
the build, and optionally pushes.bin/snapshot-cdp.js captures one Slack client snapshot through CDP.bin/reload-cdp.js reloads or navigates the Slack renderer and reports the
ready build.Create local config:
cp .env.example .env
Mine from a saved Slack client HTML file:
node datamine.js --html page.html
Mine from a live Slack CDP instance:
node datamine.js --port 9222
Queue one snapshot and mine it through the normal poller path:
node bin/snapshot-cdp.js --port 9222 --dir queue/html --fetch-client
bash bin/poll.sh
For quick extractor checks:
node datamine.js --html page.html --limit 40
node datamine.js --port 9222 --loaded-only
Systemd can help automate things, the checked-in units run Slack under Xvfb, keep CDP available, watch for new client snapshots, and mine the queue every 30 seconds. Adjust as needed, then install and start:
install -m 0644 systemd/slack-xvfb.service /etc/systemd/system/slack-xvfb.service
install -m 0644 systemd/slack-cdp.service /etc/systemd/system/slack-cdp.service
install -m 0644 systemd/slack-datamine-watch.service /etc/systemd/system/slack-datamine-watch.service
install -m 0644 systemd/slack-datamine.service /etc/systemd/system/slack-datamine.service
install -m 0644 systemd/slack-datamine.timer /etc/systemd/system/slack-datamine.timer
systemctl daemon-reload
systemctl enable --now slack-xvfb.service slack-cdp.service
systemctl enable --now slack-datamine-watch.service slack-datamine.timer
Useful commands:
systemctl status slack-datamine-watch.service --no-pager
systemctl status slack-datamine.timer --no-pager
journalctl -u slack-datamine-watch.service -u slack-datamine.service -f
Set GIT_PUSH=1 in da .env if you want to push commits and tags.
meta.json and skipped after retries.Hacker News (1)
2,121 commits
JavaScript
67.4%
Shell
32.6%