# Protobuf Tools & Decoders

## Protobuf Tools

<table id="bkmrk-toollanguagepurposel"><tr><th>Tool</th><th>Language</th><th>Purpose</th><th>Link</th></tr><tr><td>**pbtk**</td><td>Python</td><td>Extract and fuzz protobuf structures from Chrome</td><td>[GitHub](https://github.com/marin-m/pbtk)</td></tr><tr><td>**google-maps-pb-decoder**</td><td>Ruby</td><td>Decode pb URL params to JSON</td><td>[GitHub](https://github.com/serpapi/google-maps-pb-decoder)</td></tr><tr><td>**deproto**</td><td>Python</td><td>Decode, manipulate, re-encode protobuf strings (round-trip conversion)</td><td>[GitHub](https://github.com/MrDebugger/deproto)</td></tr></table>

### XHR/Network Interception

Intercept browser XHR requests during Google Maps navigation; responses contain protobuf-encoded data with "XHR1" signature. Use CDP `Network.requestWillBeSent` event + `history.replaceState()` hooks. Supported by Puppeteer request interception and Playwright route handlers.

### Sources

- [SerpAPI — Reverse Engineering Maps Pagination](https://serpapi.com/blog/how-we-reverse-engineered-google-maps-pagination/)
- [$5K Google Maps XSS via Protobuf](https://medium.com/@marin_m/how-i-found-a-5-000-google-maps-xss-by-fiddling-with-protobuf-963ee0d9caff)
- [Scrape.do — Maps Scraping Guide](https://scrape.do/blog/google-maps-scraping/)