{"id":13843132,"url":"https://github.com/robre/jsmon","last_synced_at":"2025-07-11T18:30:31.594Z","repository":{"id":43138491,"uuid":"277195570","full_name":"robre/jsmon","owner":"robre","description":"a javascript change monitoring tool for bugbounties ","archived":false,"fork":false,"pushed_at":"2024-07-31T06:34:30.000Z","size":717,"stargazers_count":589,"open_issues_count":8,"forks_count":83,"subscribers_count":15,"default_branch":"master","last_synced_at":"2024-11-21T14:38:31.560Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/robre.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-04T22:41:35.000Z","updated_at":"2024-11-15T08:18:06.000Z","dependencies_parsed_at":"2024-11-28T04:45:26.156Z","dependency_job_id":null,"html_url":"https://github.com/robre/jsmon","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/robre/jsmon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robre%2Fjsmon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robre%2Fjsmon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robre%2Fjsmon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robre%2Fjsmon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robre","download_url":"https://codeload.github.com/robre/jsmon/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robre%2Fjsmon/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264869911,"owners_count":23676129,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T17:01:55.839Z","updated_at":"2025-07-11T18:30:31.060Z","avatar_url":"https://github.com/robre.png","language":"Python","readme":"# JSMon\nJSMon - JavaScript Change Monitor for BugBounty\n\nUsing this script, you can configure a number of JavaScript files on websites that you want to monitor. Everytime you run this script, these files will be fetched and compared to the previously fetched version. If they have changed, you will be notified via Telegram with a message containing a link to the script, the changed filesizes, and a diff file to inspect the changes easily.\n\n![](telegram.png)\n\n![](diff.png)\n\n## Installation\n\nTo install JSMon:\n```bash\ngit clone https://github.com/robre/jsmon.git \ncd jsmon\npython setup.py install\n```\nYou need to set up your Slack or Telegram token in the Environment, e.g. by creating a `.env` File:\n`touch .env`\nWith The Contents:\n```\nJSMON_NOTIFY_TELEGRAM=True\nJSMON_TELEGRAM_TOKEN=YOUR TELEGRAM TOKEN\nJSMON_TELEGRAM_CHAT_ID=YOUR TELEGRAM CHAT ID\n#JSMON_NOTIFY_SLACK=True\n#JSMON_SLACK_TOKEN=sometoken\n#JSMON_SLACK_CHANNEL_ID=somechannel\n```\nTo Enable slack, uncomment the slack lines in the env and add your token.\n\nTo create a cron script to run JSMon regularly:\n```\ncrontab -e\n```\n\ncreate an entry like this:\n```\n@daily /path/to/jsmon.sh\n```\nNote that you should run the `.sh` file, because otherwise the environment will be messed up.\n\nThis will run JSMon once a day, at midnight.\nYou can change ``@daily`` to whatever schedule suits you. \n\nTo configure Telegram notifications, you need to add your Telegram API key and chat_id to the code, at the start of `jsmon.py`. You can read how to get these values [here](https://blog.r0b.re/automation/bash/2020/06/30/setup-telegram-notifications-for-your-shell.html).\n\n\nNote, for Slack Support, you need to set up your slack app correctly and use the slack oauth token.\nThe App needs to have file upload rights and needs to be in the channel that you want it in..\nLastly, you need to get started with some targets that you want to monitor. Lets create an example:\n```\necho \"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.js\" \u003e\u003e targets/cdnjs-example\n```\nAll done ! now you can run `python jsmon.py` to download the specified files for the first time!\n\n## Features\n\n- Keep Track of endpoints - check them in a configurable interval (using cron)\n- when endpoints change - send a notification via Telegram or Slack\n\n\n\n## Usage\n\n- Provide Endpoints via files in `targets/` directory (line seperated endpoints)\n    - any number of files, with one endpoint per line\n    - e.g. one file per website, or one file per program, etc.\n- Every endpoint gets downloaded and stored in downloads/ with its hash as file name (first 10 chars of md5 hash)\n    - if it already exists nothing changes\n    - if it is changed, user gets notified\n- jsmon.json keeps track of which endpoints are associated with which filehashes\n\n- jsmon is designed to keep track of javascript files on websites - but it can be used for any filetype to add endpoints \n\n\n## Contributors\n[@r0bre](https://twitter.com/r0bre) - Core\n\n[@Yassineaboukir](https://twitter.com/Yassineaboukir) - Slack Notifications\n\n","funding_links":[],"categories":["Python","Python (1887)","Miscellaneous"],"sub_categories":["Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobre%2Fjsmon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobre%2Fjsmon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobre%2Fjsmon/lists"}