Previously known as cdnfinder.js.
Webapp and cli-tool to detect CDN usage of websites. This is the backend for CDNPlanet's CDN Finder tool.
- Test single hostname or full webpage
- Automatically downloads the compatible phantomjs executable
cli: docker run -it turbobytes/cdnfinder cdnfindercli --phantomjsbin="/bin/phantomjs" --full http://www.cdnplanet.com/
server: docker run -it turbobytes/cdnfinder cdnfinderserver --phantomjsbin="/bin/phantomjs"
The --phantomjsbin="/bin/phantomjs"
portion is important to avoid re-downloading phantomjs each time you launch a container. I will get rid of it in the future using environment variables.
TODO
Usage of cdnfindercli:
-full string
URL for full finder
-host string
hostname for single hostname finder
-phantomjsbin string
path to phantomjs, if blank tmp dir is used
-server string
dns server for resolution (default "8.8.8.8:53")
Either -full
or -host
must be provided
Usage of cdnfinderserver:
-phantomjsbin string
path to phantomjs, if blank tmp dir is used
-server string
dns server for resolution (default "8.8.8.8:53")
The server listens on port 1337 on all interfaces.
Single host: curl -X POST -d '{"hostname": "st.cdnplanet.com"}' -H "Content-Type: application/json" http://127.0.0.1:1337/hostname/
Full site: curl -X POST -d '{"url": "http://www.turbobytes.com"}' -H "Content-Type: application/json" http://127.0.0.1:1337/
CNAME mappings are located in assets/cnamechain.json. It is a list of pair of strings where first item is part of the hostname to be matched and the second is the name of the CDN.
To update the list..
- Fork this repo
- Make your changes to
assets/cnamechain.json
- Run
make test
If all passes, send a pull request. If the nature of the change requires changes in the tests then please do so. Bonus points for expanding on the tests
CDN header detection logic is currently located in headerguess.go. If you have some ideas on how to express as json, I would like to hear about it in issues.