{"id":13399352,"url":"https://github.com/julian-klode/dns66","last_synced_at":"2026-10-19T08:48:07.289Z","repository":{"id":37978733,"uuid":"70996010","full_name":"julian-klode/dns66","owner":"julian-klode","description":"DNS-based Host Blocker (and lightweight ad blocker) for Android","archived":true,"fork":false,"pushed_at":"2026-03-02T21:45:42.000Z","size":769,"stargazers_count":2247,"open_issues_count":99,"forks_count":211,"subscribers_count":71,"default_branch":"main","last_synced_at":"2026-09-28T18:53:09.762Z","etag":null,"topics":["ad-blocker","adblock","android","blocker","fdroid","gplv3","gradle","java"],"latest_commit_sha":null,"homepage":"https://jak-linux.org/projects/dns66/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/julian-klode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-10-15T15:27:17.000Z","updated_at":"2026-09-23T08:44:13.000Z","dependencies_parsed_at":"2022-07-12T15:20:55.912Z","dependency_job_id":null,"html_url":"https://github.com/julian-klode/dns66","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/julian-klode/dns66","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/julian-klode%2Fdns66","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/julian-klode%2Fdns66/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/julian-klode%2Fdns66/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/julian-klode%2Fdns66/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/julian-klode","download_url":"https://codeload.github.com/julian-klode/dns66/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/julian-klode%2Fdns66/sbom","scorecard":{"id":541360,"data":{"date":"2025-08-11","repo":{"name":"github.com/julian-klode/dns66","commit":"890243fc916aabe2d73eef9d51f833d190d3bd84"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5,"checks":[{"name":"Code-Review","score":1,"reason":"Found 4/29 approved changesets -- score normalized to 1","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":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":9,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:16","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:17","Warn: no topLevel permission defined: .github/workflows/codeql.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":"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":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: gradle/wrapper/gradle-wrapper.jar:1"],"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":"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/codeql.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/julian-klode/dns66/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/julian-klode/dns66/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/julian-klode/dns66/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/julian-klode/dns66/codeql.yml/main?enable=pin","Info:   0 out of   4 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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: COPYING:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: COPYING:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: org.jak_linux.dns66_29.apk.asc: https://github.com/julian-klode/dns66/releases/tag/v0.6.8","Info: signed release artifact: org.jak_linux.dns66_28.apk.asc: https://github.com/julian-klode/dns66/releases/tag/v0.6.7","Info: signed release artifact: org.jak_linux.dns66_27.apk.asc: https://github.com/julian-klode/dns66/releases/tag/v0.6.6","Info: signed release artifact: org.jak_linux.dns66_26.apk.asc: https://github.com/julian-klode/dns66/releases/tag/v0.6.5","Info: signed release artifact: org.jak_linux.dns66_25.apk.asc: https://github.com/julian-klode/dns66/releases/tag/v0.6.4","Warn: release artifact v0.6.8 does not have provenance: https://api.github.com/repos/julian-klode/dns66/releases/40240579","Warn: release artifact v0.6.7 does not have provenance: https://api.github.com/repos/julian-klode/dns66/releases/36472562","Warn: release artifact v0.6.6 does not have provenance: https://api.github.com/repos/julian-klode/dns66/releases/31153447","Warn: release artifact v0.6.5 does not have provenance: https://api.github.com/repos/julian-klode/dns66/releases/24098329","Warn: release artifact v0.6.4 does not have provenance: https://api.github.com/repos/julian-klode/dns66/releases/24089999"],"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 'main'"],"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":"SAST","score":7,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 0 commits out of 5 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-20T08:16:52.495Z","repository_id":37978733,"created_at":"2025-08-20T08:16:52.495Z","updated_at":"2025-08-20T08:16:52.495Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":344872684,"owners_count":38352851,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-19T02:00:06.414Z","response_time":53,"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":["ad-blocker","adblock","android","blocker","fdroid","gplv3","gradle","java"],"created_at":"2024-07-30T19:00:36.677Z","updated_at":"2026-10-19T08:48:06.875Z","avatar_url":"https://github.com/julian-klode.png","language":"Java","funding_links":[],"categories":["Ad Blockers","Java","Ad blockers"],"sub_categories":["Notable Mentions","Reddit"],"readme":"DNS-Based Host Blocking for Android\n===================================\nThis is a DNS-based host blocker for Android. In the default configuration,\nseveral widely-respected host files are used to block ads, malware, and other\nweird stuff.\n\n[![codecov](https://codecov.io/gh/julian-klode/dns66/branch/master/graph/badge.svg)](https://codecov.io/gh/julian-klode/dns66)\n[![Build Status](https://travis-ci.com/julian-klode/dns66.svg?branch=master)](https://travis-ci.com/julian-klode/dns66)\n\nInstalling\n----------\n[\u003cimg src=\"https://f-droid.org/badge/get-it-on.png\"\n      alt=\"Get it on F-Droid\"\n      height=\"80\"\u003e](https://f-droid.org/app/org.jak_linux.dns66)\n\nYou can either install it via F-Droid, using the official F-Droid repository, or you can use my personal repository at https://jak-linux.org/fdroid/repo which gets updates ASAP.\n\nYou can also download apk files in GitHub's download section. Currently, these are the same files as in my personal F-Droid repository, but that might change in the future.\n\nXDA: Discussions and preview builds\n-----------------------------------\nThere is a thread at XDA, where DNS66 can be discussed and I occasionaly post\npreview builts of the git repository:\n\nhttps://forum.xda-developers.com/android/apps-games/app-dns66-source-host-ad-blocker-root-t3487497\n\nUsing it\n---------\nOn the first start, you must manually update the hosts files (using the\nrefresh button) before the service can work correctly (issue #1); and you\nmust also update the hosts files yourself regularly for now (issue #2).\n\nItems in the hosts and DNS servers lists can be moved around and removed)\nof the list using standard RecyclerView interactions (long press makes the\nentry movable, swipe to either side removes it). For hosts, a later entry\noverrides a previous entry; for DNS servers, the first server is preferred.\n\nCurrently, there are some minor usability issues:\n\n* If you change a setting, you must manually restart the vpn service (issue #3)\n* IPv6 servers are not supported (issue #4)\n\nThere's also no validation of input, so DNS servers that are not valid IPv4\naddresses are not rejected, neither are URLs for DNS server entries (we intend\nto support URLs in the future, so you can point the app to a remote list of\nservers).\n\nHow it works\n------------\nThe app establishes a VPN service, with routes for all DNS servers diverted to\nit. The VPN service then intercepts the packages for the servers and forwards\nany DNS queries that are not blacklisted.\n\nCustom upstream DNS can be configured. If the feature is turned off, the\ncurrent connection's DNS servers are used. The app ships are pre-defined\nlist of well known (mostly German) non-logging servers courtesy of the\nChaos Computer Club.\n\n\nPrivacy Guarantee\n-----------------\nPrivacy is the most important aspect of DNS66. Currently, DNS66 is strictly\ndata reducing: Running it can only reduce the amount of data leaving your\ndevice, not increase it (except for fetching hosts files, obviously), as for\neach request, we will either allow it to leave your device or not - we will\nnot send other requests or add other information to the request.\n\nWhile not yet implemented, future versions of DNS66 might have additional\nfeatures that might share more data than your phone normally would. Among\nthese features are:\n\n1. Automatic updates. Your phone might periodically contact servers to query\n   for new upstream versions and new host lists. DNS66 will only include as\n   much data as necessary to complete the request.\n\n2. Debugging. We hope to have a better way to debug program failures than\n   manually running logcat. Such a feature by definition requires sharing\n   debug logs. Debug logs (including logcat) may include personal information,\n   and you should review them before sharing them publicly.\n\nIf such a feature is added, you will be presented with the choice to enable\nit (it will be disabled by default). No such feature will be turned on without\nyour explicit consent (for example, clicking yes in a dialog asking whether you\nwant to have automatic updates).\n\nContributing\n------------\nSee [CONTRIBUTING.md](CONTRIBUTING.md)\n\nLicense\n-------\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nParts of the program are licensed under only version 3 of the license, and\nsome parts might be licensed under the terms of other compatible licenses. See\nthe file [copyright](app/src/main/assets/copyright) for further (machine-readable) information.\n\nBinaries also bundle external libraries. To the best of our knowledge those\nare licensed under the Apache license, version 2.0, except for pcap4j, which\nis licensed under the MIT license, and dnsjava, which uses a 3 clause BSD\nlicense. See\nthe file [copyright.libraries](app/src/main/assets/copyright.libraries) for further (machine-readable) information.\n\nCode of Conduct\n---------------\nPlease note that this project is released with a Contributor Code of\nConduct. By participating in this project you agree to abide by its terms.\n\nAuthors\n-------\nJulian Andres Klode \u003cjak@jak-linux.org\u003e\n\nParts are derived from https://github.com/dbrodie/AdBuster by Daniel Brodie.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjulian-klode%2Fdns66","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjulian-klode%2Fdns66","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjulian-klode%2Fdns66/lists"}