{"id":22695897,"url":"https://github.com/sarukuku/dependency-checker","last_synced_at":"2026-05-09T01:02:50.757Z","repository":{"id":148784267,"uuid":"122453447","full_name":"sarukuku/dependency-checker","owner":"sarukuku","description":"A command line tool that checks your web page's dependencies, what percentage of them are cross-origin or cross-domain and who's in control of them.","archived":false,"fork":false,"pushed_at":"2018-03-14T10:05:14.000Z","size":75,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-29T18:11:14.861Z","etag":null,"topics":["dependencies","nodejs","puppeteer","whois"],"latest_commit_sha":null,"homepage":"","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/sarukuku.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":"2018-02-22T08:55:34.000Z","updated_at":"2018-03-14T10:05:15.000Z","dependencies_parsed_at":null,"dependency_job_id":"c04b799d-943d-419b-9c23-872f039a703e","html_url":"https://github.com/sarukuku/dependency-checker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sarukuku/dependency-checker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sarukuku%2Fdependency-checker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sarukuku%2Fdependency-checker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sarukuku%2Fdependency-checker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sarukuku%2Fdependency-checker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sarukuku","download_url":"https://codeload.github.com/sarukuku/dependency-checker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sarukuku%2Fdependency-checker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32803625,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"ssl_error","status_checked_at":"2026-05-08T08:22:45.650Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["dependencies","nodejs","puppeteer","whois"],"created_at":"2024-12-10T04:12:17.072Z","updated_at":"2026-05-09T01:02:50.740Z","avatar_url":"https://github.com/sarukuku.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Third-Party Dependency Checker\nA command line tool that checks your web page's dependencies, what percentage of them are cross-origin or cross-domain and who's in control of them.\n\n## How to install\nClone or download the repository and run `yarn` in it.\n\n## Dependencies\nThe app has been tested on macOS High Sierra and Ubuntu 17.10. It has the followind dependencies:\n- availability of `/bin/bash`\n- availability of `yarn` command on `/bin/bash`\n- availability of `whois`command on `/bin/bash` \n- node version \u003e= 9.3.0\n- a good network connection\n\nIf you're running this on Ubuntu puppeteer requires a few dependencies. More of them can be read from [here](https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md).\n\n## How to use\nBasic test.\n```\nyarn start --url=https://example.com/\n```\n\nFollow redirects. By default the URL you give will be used in the cross-origin or cross-domain comparisons as is. A lot of domains have redirects in place that look f.ex. like this `http://example.com` -\u003e `https://www.example.com`. This means that all resources the page donwloads from `www.example.com` are considered cross-origin as you told to compare exactly to `example.com`. By setting the `--follow-redirects` flag the comparison URL will be automatically updated to the URL the initial document was downloaded from.\n```\nyarn start --url=https://example.com/ --follow-redirects\n```\n\nWait 5000 ms after initial page load to give the page time f.ex. to lazyload scripts, styles and media.\n```\nyarn start --url=https://example.com/ --wait=5000\n```\n\nPrint long output (query organizational data for cross-origins or cross-domains with native `whois` depending on the --ignore-subdomains flag).\n```\nyarn start --url=https://example.com/ -l\n```\n\nIgnore subdomains when doing the cross-origin comparison (basically the test becomes cross-domain comparison instead of cross-origin).\n```\nyarn start --url=https://example.com/ --ignore-subdomains\n```\n\nConsider other domains as same-origin or same-domain (=trusted). This helps f.ex. in cases where you know that the organization that owns the domain the test is run for also owns other domains that you don't want to appear as cross-origin or cross-domain to the dependency checker. This helps in narrowing the results down to the actual third-party organizations more easily.\n```\nyarn start --url=https://example.com/ --consider-trusted=www.other-domain.com --consider-trusted=another-domain.net\n```\n\nSilent or quiet mode. Don't show progress or error messages. Makes Third-Party Dependency Checker mute. It will still output the data you ask for, potentially even to the terminal/stdout unless you redirect it.\n\nAs the commands are run with `yarn` to achieve a \"total silent\" mode you'll need to make `yarn` silent too. That can be done like this `yarn --silent`. \n```\nyarn start --silent\n```\n\nSet the data output format. Available formats are print to console (which is the default) and JSON string that can be turned on by setting the `--output` handle value to `json`.\n```\nyarn start --output=json\n```\n\nAll of the flags above can be combined freely.\n\n## Example output of basic test\n```\n$ npm run start -- --url=https://bond-agency.com/ -l\n\n\u003e @ start /dependency-checker\n\u003e node index.js \"--url=https://bond-agency.com/\" \"-l\"\n\nStarting the test...\nLoading page...\nClosing the page...\nCollecting whois data for cross-domains...\nCollecting whois data of document sources...\nCollecting whois data of stylesheet sources...\nCollecting whois data of script sources...\nCollecting whois data of image sources...\nCollecting whois data of font sources...\nPrinting results...\n\nResource type: document\nTotal: 1\nSame origin: 1\nCross-origin: 0\nCross-origin percentage: 0.00%\n\nResource type: stylesheet\nTotal: 3\nSame origin: 3\nCross-origin: 0\nCross-origin percentage: 0.00%\n\nResource type: script\nTotal: 7\nSame origin: 4\nCross-origin: 3\nCross-origin percentage: 42.86%\nCross origin resources:\n\n  URL: https://code.jquery.com/jquery-2.2.0.min.js\n  Owner data:\n    Registrant Name:\n    Registrant Organization:\n    Registrant Country:\n\n  URL: https://www.googletagmanager.com/gtm.js?id=GTM-5M8X4L8\n  Owner data:\n    Registrant Name: DNS Admin\n    Registrant Organization: Google Inc.\n    Registrant Country: US\n\n  URL: https://www.google-analytics.com/analytics.js\n  Owner data:\n    Registrant Name: Domain Administrator\n    Registrant Organization: Google LLC\n    Registrant Country: US\n\nResource type: image\nTotal: 19\nSame origin: 17\nCross-origin: 2\nCross-origin percentage: 10.53%\nCross origin resources:\n\n  URL: https://www.google-analytics.com/r/collect?v=1\u0026_v=j66\u0026a=336758200\u0026t=pageview\u0026_s=1\u0026dl=https%3A%2F%2F...\n  Owner data:\n    Registrant Name: Domain Administrator\n    Registrant Organization: Google LLC\n    Registrant Country: US\n\n  URL: https://stats.g.doubleclick.net/r/collect?v=1\u0026aip=1\u0026t=dc\u0026_r=3\u0026tid=UA-23096829-1\u0026cid=1531247133.1519...\n  Owner data:\n    Registrant Name:\n    Registrant Organization:\n    Registrant Country:\n\nResource type: font\nTotal: 4\nSame origin: 4\nCross-origin: 0\nCross-origin percentage: 0.00%\n\n#####################################################\nTotal requests: 34\nTotal same domain requests: 29\nTotal cross-origin requests: 5\nTotal cross-origin percentage: 14.71%\n#####################################################\n\nDone!\nTest duration: 30677.906ms\n```\n\n## Example JSON output of basic test\nThe actual output isn't pretty printed but here it is for better readability.\n\nCommand:\n```bash\nyarn --silent start --url=https://bond-agency.com/ -l --silent --output=json\n```\n\nOutput:\n```json\n{\n  \"requests\": {\n    \"document\": {\n      \"totalCount\": 1,\n      \"sameOriginCount\": 1,\n      \"crossOriginCount\": 0,\n      \"urls\": [\n        {\n          \"url\": \"https:\\/\\/bond-agency.com\\/\",\n          \"crossOrigin\": false\n        }\n      ],\n      \"crossOriginPercentage\": \"0.00\"\n    },\n    \"stylesheet\": {\n      \"totalCount\": 3,\n      \"sameOriginCount\": 3,\n      \"crossOriginCount\": 0,\n      \"urls\": [\n        {\n          \"url\": \"https:\\/\\/bond-agency.com\\/wp-content\\/plugins\\/google-captcha\\/css\\/gglcptch.css\",\n          \"crossOrigin\": false\n        },\n        {\n          \"url\": \"https:\\/\\/bond-agency.com\\/wp-content\\/themes\\/bond\\/library\\/css\\/style.css\",\n          \"crossOrigin\": false\n        },\n        {\n          \"url\": \"https:\\/\\/bond-agency.com\\/wp-content\\/themes\\/bond\\/library\\/fonts\\/fonts.css\",\n          \"crossOrigin\": false\n        }\n      ],\n      \"crossOriginPercentage\": \"0.00\"\n    },\n    \"script\": {\n      \"totalCount\": 7,\n      \"sameOriginCount\": 4,\n      \"crossOriginCount\": 3,\n      \"urls\": [\n        {\n          \"url\": \"https:\\/\\/bond-agency.com\\/wp-content\\/themes\\/bond\\/library\\/js\\/libs\\/min\\/modernizr-3.3.1-min.js\",\n          \"crossOrigin\": false\n        },\n        {\n          \"url\": \"https:\\/\\/bond-agency.com\\/wp-content\\/themes\\/bond\\/library\\/js\\/libs\\/jquery-fallback.js\",\n          \"crossOrigin\": false\n        },\n        {\n          \"url\": \"https:\\/\\/bond-agency.com\\/wp-content\\/themes\\/bond\\/library\\/js\\/dist\\/plugins.js\",\n          \"crossOrigin\": false\n        },\n        {\n          \"url\": \"https:\\/\\/bond-agency.com\\/wp-content\\/themes\\/bond\\/library\\/js\\/dist\\/main.js\",\n          \"crossOrigin\": false\n        },\n        {\n          \"url\": \"https:\\/\\/code.jquery.com\\/jquery-2.2.0.min.js\",\n          \"crossOrigin\": true,\n          \"ownerData\": {\n            \"domain\": \"jquery.com\",\n            \"registrantName\": \"Kris Borchers\",\n            \"registrantOrganization\": \"JS Foundation\",\n            \"registrantCountry\": \"US\"\n          }\n        },\n        {\n          \"url\": \"https:\\/\\/www.googletagmanager.com\\/gtm.js?id=GTM-5M8X4L8\",\n          \"crossOrigin\": true,\n          \"ownerData\": {\n            \"domain\": \"googletagmanager.com\",\n            \"registrantName\": \"DNS Admin\",\n            \"registrantOrganization\": \"Google Inc.\",\n            \"registrantCountry\": \"US\"\n          }\n        },\n        {\n          \"url\": \"https:\\/\\/www.google-analytics.com\\/analytics.js\",\n          \"crossOrigin\": true,\n          \"ownerData\": {\n            \"domain\": \"google-analytics.com\",\n            \"registrantName\": \"Domain Administrator\",\n            \"registrantOrganization\": \"Google LLC\",\n            \"registrantCountry\": \"US\"\n          }\n        }\n      ],\n      \"crossOriginPercentage\": \"42.86\"\n    },\n    \"image\": {\n      \"totalCount\": 12,\n      \"sameOriginCount\": 10,\n      \"crossOriginCount\": 2,\n      \"urls\": [\n        {\n          \"url\": \"https:\\/\\/bond-agency.com\\/wp-content\\/uploads\\/2017\\/10\\/914f07bc-bond_loupedeck_main-480x300.jpg\",\n          \"crossOrigin\": false\n        },\n        {\n          \"url\": \"https:\\/\\/bond-agency.com\\/wp-content\\/uploads\\/2018\\/02\\/8cf80790-dm_02-480x300.jpg\",\n          \"crossOrigin\": false\n        },\n        {\n          \"url\": \"https:\\/\\/bond-agency.com\\/wp-content\\/uploads\\/2017\\/10\\/961107d8-m_001b_mini-480x300.jpg\",\n          \"crossOrigin\": false\n        },\n        {\n          \"url\": \"https:\\/\\/bond-agency.com\\/wp-content\\/uploads\\/2018\\/02\\/944807c0-dm_03-480x300.jpg\",\n          \"crossOrigin\": false\n        },\n        {\n          \"url\": \"https:\\/\\/bond-agency.com\\/wp-content\\/uploads\\/2018\\/02\\/8d44079a-woolmark_01-480x300.jpg\",\n          \"crossOrigin\": false\n        },\n        {\n          \"url\": \"https:\\/\\/bond-agency.com\\/wp-content\\/uploads\\/2018\\/01\\/8dc007a5-flow_case_vertical-480x300.jpg\",\n          \"crossOrigin\": false\n        },\n        {\n          \"url\": \"https:\\/\\/bond-agency.com\\/wp-content\\/uploads\\/2018\\/01\\/954107b3-kape_book_photo_03-480x300.jpg\",\n          \"crossOrigin\": false\n        },\n        {\n          \"url\": \"https:\\/\\/bond-agency.com\\/wp-content\\/uploads\\/2017\\/11\\/8ebe0797-bond-helsinki_senior-creative-480x300.jpg\",\n          \"crossOrigin\": false\n        },\n        {\n          \"url\": \"https:\\/\\/bond-agency.com\\/wp-content\\/uploads\\/2017\\/10\\/8e7c07aa-m_001c-480x300.jpg\",\n          \"crossOrigin\": false\n        },\n        {\n          \"url\": \"https:\\/\\/bond-agency.com\\/wp-content\\/uploads\\/2016\\/12\\/eero_aarnio_originals_bond-480x300.jpg\",\n          \"crossOrigin\": false\n        },\n        {\n          \"url\": \"https:\\/\\/www.google-analytics.com\\/r\\/collect?v=1\u0026_v=j66\u0026a=147661730\u0026t=pageview\u0026_s=1\u0026dl=https%3A%2F%2Fbond-agency.com%2F\u0026ul=en-us\u0026de=UTF-8\u0026dt=BOND\u0026sd=24-bit\u0026sr=1366x1024\u0026vp=1366x1024\u0026je=0\u0026_u=YEBAAAAB~\u0026jid=1106132092\u0026gjid=1444640964\u0026cid=752906807.1519662423\u0026tid=UA-23096829-1\u0026_gid=1990809932.1519662423\u0026_r=1\u0026gtm=G2l5M8X4L8\u0026z=1398644255\",\n          \"crossOrigin\": true,\n          \"ownerData\": {\n            \"domain\": \"google-analytics.com\",\n            \"registrantName\": \"Domain Administrator\",\n            \"registrantOrganization\": \"Google LLC\",\n            \"registrantCountry\": \"US\"\n          }\n        },\n        {\n          \"url\": \"https:\\/\\/stats.g.doubleclick.net\\/r\\/collect?v=1\u0026aip=1\u0026t=dc\u0026_r=3\u0026tid=UA-23096829-1\u0026cid=752906807.1519662423\u0026jid=1106132092\u0026_gid=1990809932.1519662423\u0026gjid=1444640964\u0026_v=j66\u0026z=1398644255\",\n          \"crossOrigin\": true,\n          \"ownerData\": {\n            \"domain\": \"doubleclick.net\",\n            \"registrantName\": \"DNS Admin\",\n            \"registrantOrganization\": \"Google Inc.\",\n            \"registrantCountry\": \"US\"\n          }\n        }\n      ],\n      \"crossOriginPercentage\": \"16.67\"\n    },\n    \"font\": {\n      \"totalCount\": 1,\n      \"sameOriginCount\": 1,\n      \"crossOriginCount\": 0,\n      \"urls\": [\n        {\n          \"url\": \"https:\\/\\/bond-agency.com\\/wp-content\\/themes\\/bond\\/library\\/fonts\\/bond-icons\\/fonts\\/icomoon.woff?-95ud60\",\n          \"crossOrigin\": false\n        }\n      ],\n      \"crossOriginPercentage\": \"0.00\"\n    }\n  },\n  \"totalRequests\": 24,\n  \"totalSameOriginRequests\": 19,\n  \"totalCrossOriginRequests\": 5,\n  \"crossOriginPercentage\": \"20.83\"\n}\n```\n\n## Miscellaneous notes\n\nThe app caches succesfully parsed whois query results in a persistent sqlite3 database. To clear the cache simply delete the file named `whois-cache.sqlite3` from the repository root.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsarukuku%2Fdependency-checker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsarukuku%2Fdependency-checker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsarukuku%2Fdependency-checker/lists"}