{"id":15404394,"url":"https://github.com/agis/mcdetect","last_synced_at":"2025-04-16T20:53:37.216Z","repository":{"id":57293068,"uuid":"103441388","full_name":"agis/mcdetect","owner":"agis","description":"Catch mixed content issues in the wild","archived":false,"fork":false,"pushed_at":"2020-09-03T03:18:28.000Z","size":2292,"stargazers_count":58,"open_issues_count":8,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-29T05:41:33.001Z","etag":null,"topics":["cli","headless-chrome","https","mixed-content","mixed-content-error","node-cli"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/mcdetect","language":"JavaScript","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/agis.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}},"created_at":"2017-09-13T19:23:30.000Z","updated_at":"2024-10-14T00:39:29.000Z","dependencies_parsed_at":"2022-08-27T12:21:14.567Z","dependency_job_id":null,"html_url":"https://github.com/agis/mcdetect","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agis%2Fmcdetect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agis%2Fmcdetect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agis%2Fmcdetect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agis%2Fmcdetect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agis","download_url":"https://codeload.github.com/agis/mcdetect/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249275777,"owners_count":21242284,"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":["cli","headless-chrome","https","mixed-content","mixed-content-error","node-cli"],"created_at":"2024-10-01T16:12:34.994Z","updated_at":"2025-04-16T20:53:37.192Z","avatar_url":"https://github.com/agis.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mcdetect - catch mixed content issues in the wild\n[![NPM version](https://img.shields.io/npm/v/mcdetect.svg)](https://www.npmjs.com/package/mcdetect)\n\n_mcdetect_ is a tool that detects [mixed content issues](https://developers.google.com/web/fundamentals/security/prevent-mixed-content/what-is-mixed-content)\nwith certainty.\n\n![mcdetect demo](demo.gif)\n\n## Motivation\n\nTools used to catch mixed content issues often rely\non parsing the DOM to determine if insecure content _will_ be loaded in a specific\npage. Consequently they may report false negatives since not all such issues\ncan be detected statically.\n\n_mcdetect_ can determine with absolute certainty if any mixed content\nerrors or warnings actually occur on a page. It does this by visiting\nthe pages and evaluating their Javascript like a regular browser would do.\nIn other words, it _does not report false negatives_.\n\nIt does this by leveraging [Headless Chrome](https://developers.google.com/web/updates/2017/04/headless-chrome)\nthat shipped with Chrome 59 and the [DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/).\n\n## Requirements\n\n- Node 7.6.0 or later\n\n## Installation\n\n```shell\n$ npm install -g mcdetect\n```\n\n## Usage\n\nChecking a single target page:\n\n```shell\n$ mcdetect https://example.com https://google.com\n```\n\nChecking multiple targets (if no protocol is specified, it is assumed to be\n\"https://\"):\n```shell\n$ mcdetect example.com google.com\n```\n\nMultiple targets can also be given via a config file:\n\n```shell\n$ cat my_urls.json\n{\n  \"targets\": [\n    \"googlesamples.github.io/web-fundamentals/fundamentals/security/prevent-mixed-content/xmlhttprequest-example.html\",\n    \"googlesamples.github.io/web-fundamentals/fundamentals/security/prevent-mixed-content/passive-mixed-content.html\"\n  ]\n}\n\n$ mcdetect --config my_urls.json\n```\n\nFor more usage examples and options see `mcdetect --help`.\n\n## TODO\n\n- Add scraping mode (with max depth)\n- More output formats (eg. json, csv, pdf)\n- error handling (modes: exit on error, ignore errors, report errors)\n- interactive mode\n- follow redirects\n- read targets from stdin\n\n## License\n\nmcdetect is licensed under MIT. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagis%2Fmcdetect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagis%2Fmcdetect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagis%2Fmcdetect/lists"}