{"id":13416692,"url":"https://github.com/chromedp/chromedp","last_synced_at":"2025-09-09T20:25:40.681Z","repository":{"id":37276454,"uuid":"79921099","full_name":"chromedp/chromedp","owner":"chromedp","description":"A faster, simpler way to drive browsers supporting the Chrome DevTools Protocol.","archived":false,"fork":false,"pushed_at":"2025-08-05T20:22:08.000Z","size":2910,"stargazers_count":12221,"open_issues_count":150,"forks_count":833,"subscribers_count":158,"default_branch":"master","last_synced_at":"2025-09-04T09:30:33.364Z","etag":null,"topics":["chrome","chrome-debugging-protocol","chrome-devtools","golang","headless","testing","unit-testing"],"latest_commit_sha":null,"homepage":"","language":"Go","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/chromedp.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,"zenodo":null}},"created_at":"2017-01-24T14:54:30.000Z","updated_at":"2025-09-04T07:54:39.000Z","dependencies_parsed_at":"2023-10-11T06:56:55.464Z","dependency_job_id":"b38cedb2-feb5-4bcd-8384-6da062a4a640","html_url":"https://github.com/chromedp/chromedp","commit_stats":{"total_commits":666,"total_committers":48,"mean_commits":13.875,"dds":0.6096096096096096,"last_synced_commit":"4ea2300cf7c7065242867bdcb8772533e0a66ea7"},"previous_names":["knq/chromedp"],"tags_count":69,"template":false,"template_full_name":null,"purl":"pkg:github/chromedp/chromedp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chromedp%2Fchromedp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chromedp%2Fchromedp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chromedp%2Fchromedp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chromedp%2Fchromedp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chromedp","download_url":"https://codeload.github.com/chromedp/chromedp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chromedp%2Fchromedp/sbom","scorecard":{"id":281537,"data":{"date":"2025-08-11","repo":{"name":"github.com/chromedp/chromedp","commit":"422fa06290cda228e5712bdda55fbf7a0f6c8466"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":4,"reason":"3 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":2,"reason":"Found 7/30 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/chromedp/chromedp/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/chromedp/chromedp/test.yml/master?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 9 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T15:58:50.042Z","repository_id":37276454,"created_at":"2025-08-17T15:58:50.042Z","updated_at":"2025-08-17T15:58:50.042Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273689965,"owners_count":25150630,"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","status":"online","status_checked_at":"2025-09-04T02:00:08.968Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["chrome","chrome-debugging-protocol","chrome-devtools","golang","headless","testing","unit-testing"],"created_at":"2024-07-30T22:00:20.066Z","updated_at":"2025-09-09T20:25:40.656Z","avatar_url":"https://github.com/chromedp.png","language":"Go","funding_links":[],"categories":["Popular","Go","Uncategorized","开源类库","HarmonyOS","Open source library","Testing","chrome","Chrome DevTools Protocol","Tools","Golang","Mock"],"sub_categories":["Uncategorized","桌面开发","Windows Manager","Desktop Development","Selenium and browser control tools","Selenium and browser control tools.","Libraries for driving the protocol (or a layer above)","Scraper"],"readme":"# About chromedp\n\nPackage `chromedp` is a faster, simpler way to drive browsers supporting the\n[Chrome DevTools Protocol][devtools-protocol] in Go without external dependencies.\n\n[![Unit Tests][chromedp-ci-status]][chromedp-ci]\n[![Go Reference][goref-chromedp-status]][goref-chromedp]\n[![Releases][release-status]][releases]\n\n## Installing\n\nInstall in the usual Go way:\n\n```sh\n$ go get -u github.com/chromedp/chromedp\n```\n\n## Examples\n\nRefer to the [Go reference][goref-chromedp] for the documentation and examples.\nAdditionally, the [examples][chromedp-examples] repository contains more\nexamples on complex actions, and other common high-level tasks such as taking\nfull page screenshots.\n\n## Frequently Asked Questions\n\n\u003e I can't see any Chrome browser window\n\nBy default, Chrome is run in headless mode. See `DefaultExecAllocatorOptions`, and\n[an example][goref-chromedp-exec-allocator] to override the default options.\n\n\u003e I'm seeing \"context canceled\" errors\n\nWhen the connection to the browser is lost, `chromedp` cancels the context, and\nit may result in this error. This occurs, for example, if the browser is closed\nmanually, or if the browser process has been killed or otherwise terminated.\n\n\u003e Chrome exits as soon as my Go program finishes\n\nOn Linux, `chromedp` is configured to avoid leaking resources by force-killing\nany started Chrome child processes. If you need to launch a long-running Chrome\ninstance, manually start Chrome and connect using `RemoteAllocator`.\n\n\u003e Executing an action without `Run` results in \"invalid context\"\n\nBy default, a `chromedp` context does not have an executor, however one can be\nspecified manually if necessary; see [issue #326][github-326]\nfor an example.\n\n\u003e I can't use an `Action` with `Run` because it returns many values\n\nWrap it with an `ActionFunc`:\n\n```go\nctx, cancel := chromedp.NewContext(context.Background())\ndefer cancel()\nchromedp.Run(ctx, chromedp.ActionFunc(func(ctx context.Context) error {\n\t_, err := domain.SomeAction().Do(ctx)\n\treturn err\n}))\n```\n\n\u003e I want to use chromedp on a headless environment\n\nThe simplest way is to run the Go program that uses chromedp inside the\n[chromedp/headless-shell][docker-headless-shell] image. That image contains\n`headless-shell`, a smaller headless build of Chrome, which `chromedp` is able\nto find out of the box.\n\n## Resources\n\n* [`headless-shell`][docker-headless-shell] - A build of `headless-shell` that is used for testing `chromedp`\n* [chromedp: A New Way to Drive the Web][gophercon-2017-presentation] - GopherCon SG 2017 talk\n* [Chrome DevTools Protocol][devtools-protocol] - Chrome DevTools Protocol reference\n* [chromedp examples][chromedp-examples] - More complicated examples for `chromedp`\n* [`github.com/chromedp/cdproto`][goref-cdproto] - Go reference for the generated Chrome DevTools Protocol API\n* [`github.com/chromedp/pdlgen`][chromedp-pdlgen] - tool used to generate `cdproto`\n* [`github.com/chromedp/chromedp-proxy`][chromedp-proxy] - a simple CDP proxy for logging CDP clients and browsers\n\n[chromedp-ci]: https://github.com/chromedp/chromedp/actions/workflows/test.yml (Test CI)\n[chromedp-ci-status]: https://github.com/chromedp/chromedp/actions/workflows/test.yml/badge.svg (Test CI)\n[chromedp-examples]: https://github.com/chromedp/examples\n[chromedp-pdlgen]: https://github.com/chromedp/pdlgen\n[chromedp-proxy]: https://github.com/chromedp/chromedp-proxy\n[devtools-protocol]: https://chromedevtools.github.io/devtools-protocol/\n[docker-headless-shell]: https://hub.docker.com/r/chromedp/headless-shell/\n[github-326]: https://github.com/chromedp/chromedp/issues/326\n[gophercon-2017-presentation]: https://www.youtube.com/watch?v=_7pWCg94sKw\n[goref-cdproto]: https://pkg.go.dev/github.com/chromedp/cdproto\n[goref-chromedp-exec-allocator]: https://pkg.go.dev/github.com/chromedp/chromedp#example-ExecAllocator\n[goref-chromedp]: https://pkg.go.dev/github.com/chromedp/chromedp\n[goref-chromedp-status]: https://pkg.go.dev/badge/github.com/chromedp/chromedp.svg\n[release-status]: https://img.shields.io/github/v/release/chromedp/chromedp?display_name=tag\u0026sort=semver (Latest Release)\n[releases]: https://github.com/chromedp/chromedp/releases (Releases)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchromedp%2Fchromedp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchromedp%2Fchromedp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchromedp%2Fchromedp/lists"}