{"id":19549027,"url":"https://github.com/dtaivpp/ghsearcher","last_synced_at":"2026-05-15T10:42:52.247Z","repository":{"id":57434256,"uuid":"433544615","full_name":"dtaivpp/ghsearcher","owner":"dtaivpp","description":"A github searching command line tool ","archived":false,"fork":false,"pushed_at":"2022-08-30T02:04:31.000Z","size":19,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-09T00:05:53.203Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dtaivpp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-11-30T18:36:26.000Z","updated_at":"2021-11-30T21:54:28.000Z","dependencies_parsed_at":"2022-08-27T23:10:33.199Z","dependency_job_id":null,"html_url":"https://github.com/dtaivpp/ghsearcher","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtaivpp%2Fghsearcher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtaivpp%2Fghsearcher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtaivpp%2Fghsearcher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtaivpp%2Fghsearcher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dtaivpp","download_url":"https://codeload.github.com/dtaivpp/ghsearcher/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240806188,"owners_count":19860738,"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-11-11T03:57:43.200Z","updated_at":"2025-11-20T10:04:40.102Z","avatar_url":"https://github.com/dtaivpp.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GitHub Searcher\nghsearcher is a utility for searching GitHub from the command line.\n\n## Usage\n\n1. Install with pip `pip install ghsearcher`\n2. (Optional) you can either export an environment variable named \"GH_TOKEN\" or include it in a local .env file to ensure you can make the most requests. See [\"Creating a personal access token\"](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) for more information on how to do so.\n\n```\nusage: ghsearcher [-h] [-v] [--debug]\n                  [-e {users,code,issues,commits,labels,repos,topics}] [-o OUTPUT_FILE]\n                  -q QUERY [QUERY ...]\n\nSearch for things in GitHub\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -v, --version         show program's version number and exit\n  --debug               Set this if you would like to see verbose logging.\n  -e {users,code,issues,commits,labels,repos,topics}, --endpoint {users,code,issues,commits,labels,repos,topics}\n                        Endpoint you would like to search\n  -o OUTPUT_FILE, --output-file OUTPUT_FILE\n                        File name for where you want the JSON output to go. eg:\n                        output/test will output a file in the output dir with the file\n                        name test-2022-01-01.json\n  -q QUERY [QUERY ...], --query QUERY [QUERY ...]\n                        Query you would like to use to search\n```\n\nTo learn about building queries you can check the following documentaiton for GitHubs search queries:\n\nhttps://docs.github.com/en/rest/reference/search#constructing-a-search-query\n\n\nHere is a simple example. The Kafka project is trying to better track if users are having issues with implementing their kafka into thier project so the create a data pipeline with the following to find issues in other repos featuring Kafka.\n\nThis example finds all issues including \"Kafka\" created on or after 2022-01-18 and outputting it to kafka_output_file-(todays date).json\n```\n# The source is a repo and it is running against the gh_dorks_test.txt file\nghsearcher -e issues -q \"Kafka created:\u003e2022-01-18\" -o kafka_output_file\n```\n\u003c!--\nHere is a simple example:\n```\n# The source is a repo and it is running against the gh_dorks_test.txt file\nghdorker -s repo -d samples/dorks.txt dtaivpp/NewsTicker\n```\n\nAdditionally you can create a yaml config file like so for using only specific dorks on repos.\n```yaml\ndtaivpp/cloud_haiku:\n  scope: repo, org, user\n  find: \"Testing code long time\"\n  replace_with: \"NO\"\n  branch_name: \"GHRipper_Replacement\"\n  commit_message: \"Testing code long time -\u003e NO\"\n  push: False\n```\n\nThis would run all the dorks that fall under the cloud section of the YAML.\n```\nghdorker -s repo dtaivpp/NewsTicker -d samples/dorks.yaml --options all.cloud\n```\n\nThis would run all the dorks that fall under the aws and the identity sections. It's okay to duplicate entries under different sections as on the backend it is checking each entry for uniqueness.\n```\nghdorker -s repo dtaivpp/NewsTicker -d samples/dorks.yaml --options all.cloud.aws all.identiy\n```\n\nAnd finally here is an example of how you could output the results to either a json or csv file.\n```\nghdorker -s user dtaivpp -d samples/dorks.yaml --options all.cloud.aws all.test -o output.json\n```\nThis is always output to the console:\n```\n2021-11-18 06:47:57,847 - dork: rds.amazonaws.com password user:dtaivpp, repository: dtaivpp/gh-dorker, path: samples/dorks.yaml, score: 1.0\n2021-11-18 06:47:57,848 - dork: rds.amazonaws.com password user:dtaivpp, repository: dtaivpp/gh-dorker, path: README.md, score: 1.0\n2021-11-18 06:48:05,171 - dork: extension:md user:dtaivpp, repository: dtaivpp/dtaivpp, path: README.md, score: 1.0\n2021-11-18 06:48:05,172 - dork: extension:md user:dtaivpp, repository: dtaivpp/gh-dorker, path: CONTRIBUTING.md, score: 1.0\n2021-11-18 06:48:05,172 - dork: extension:md user:dtaivpp, repository: dtaivpp/gh-dorker, path: README.md, score: 1.0\n2021-11-18 06:48:05,172 - dork: extension:md user:dtaivpp, repository: dtaivpp/OpenSearch-Utilization, path: README.md, score: 1.0\n2021-11-18 06:48:05,172 - dork: extension:md user:dtaivpp, repository: dtaivpp/DevOps-Template, path: README.md, score: 1.0\n```\n\nAnd in addition here is what it looks like as JSON:\n```json\n[\n    {\n        \"dork\": \"rds.amazonaws.com password user:dtaivpp\",\n        \"repository\": \"dtaivpp/gh-dorker\",\n        \"path\": \"samples/dorks.yaml\",\n        \"score\": 1.0\n    },\n    {\n        \"dork\": \"rds.amazonaws.com password user:dtaivpp\",\n        \"repository\": \"dtaivpp/gh-dorker\",\n        \"path\": \"README.md\",\n        \"score\": 1.0\n    },\n    {\n        \"dork\": \"extension:md user:dtaivpp\",\n        \"repository\": \"dtaivpp/dtaivpp\",\n        \"path\": \"README.md\",\n        \"score\": 1.0\n    },\n    {\n        \"dork\": \"extension:md user:dtaivpp\",\n        \"repository\": \"dtaivpp/gh-dorker\",\n        \"path\": \"CONTRIBUTING.md\",\n        \"score\": 1.0\n    },\n    {\n        \"dork\": \"extension:md user:dtaivpp\",\n        \"repository\": \"dtaivpp/gh-dorker\",\n        \"path\": \"README.md\",\n        \"score\": 1.0\n    }\n]\n```\n\nAs an aside, rate limiting is already built into the codebase. It will not allow you to make more requests than allowable. GH-Dorker grabs your real rate limits live from GitHub so it will make the maximim amount of requests permittable in a given timeframe.\n\n## Contributing\n\nFor how to contribute please see [CONTRIBUTING.md](\"CONTRIBUTING.md\").\n\n\n## Credits\nReference points for creating GitDorker and compiling dorks lists\n\n- [@techgaun](https://github.com/techgaun/github-dorks) - This was the primary repo I was looking to for inspiration when writing this dorker\n- [@obheda12](https://github.com/obheda12/GitDorker) - You have one of the cleanest README's ive read in a while and if you couldn't tell has inspired much of this project's structure\n--\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdtaivpp%2Fghsearcher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdtaivpp%2Fghsearcher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdtaivpp%2Fghsearcher/lists"}