Automatically block unwanted, leeches and abnormal BT peers with support for customized and cloud rules.| BT 反吸血工具 - 自动封禁不受欢迎、吸血和异常的 BT 客户端,并支持自定义规则。支持 qB/qBEE/Deluge/BiglyBT/BitComet
This report summarizes scanner evidence for PBH-BTN/PeerBanHelper, a Java project with 6,378 GitHub stars. SynthScan examined 114,469 lines of code across 1168 source files, recording 136 pattern matches distributed across 6 syntactic categories. The legacy adjusted pattern signal is 1.8 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 131 finding(s).
Are imports declared and package/API names verified? 5 finding(s).
Are wrappers, guards, and repeated structures necessary? 2 finding(s).
Which changes need focused human review? 136 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 136 distinct pattern matches across 6 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/test-db/config/config.yml | 1 | config-version: 46 | COMMENT |
| LOW | test/test-db/config/config.yml | 21 | # so your support is vital to us. | COMMENT |
| LOW | test/test-db/config/config.yml | 41 | # Allow CORS, should be enabled when you use external WebUI only. | COMMENT |
| LOW | test/test-db/config/config.yml | 61 | # Do you want persist the banlist? If you disable it, PBH will reset the banlist when you restarting it. | COMMENT |
| LOW | test/test-db/config/config.yml | 81 | # 以下信息将被发送到 BTN 实例; | COMMENT |
| LOW | test/test-db/config/config.yml | 101 | # 是否允许 PeerBanHelper 接收来自 BTN 服务器的 Aviator 脚本 | COMMENT |
| LOW | test/test-db/config/config.yml | 121 | # 1 = 使用系统代理 - Use system proxy | COMMENT |
| LOW | test/test-db/config/config.yml | 161 | # 是否使用友好格式的回环地址 IP 映射 | COMMENT |
| LOW | .github/FUNDING.yml | 1 | # These are supported funding model platforms | COMMENT |
| LOW | .github/ISSUE_TEMPLATE/config.yml | 1 | blank_issues_enabled: false | COMMENT |
| LOW | webui/src/components/pageFooter.vue | 101 | (error) => { | COMMENT |
| LOW | openspec/config.yaml | 1 | schema: spec-driven | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/profile.yml | 21 | module: | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/profile.yml | 101 | # Torrent 小于此值不进行检查(单位:字节),对等体可能来不及同步正确的下载进度 | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/profile.yml | 121 | # (Sometimes the pisces may break during transfer, client may drop those pisces, we allow client have rewind in reas | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/profile.yml | 141 | # IPV6 prefix length, same prefix will trick as a same user | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/profile.yml | 161 | # Max duration before ban | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/profile.yml | 181 | # The disconnect duration for fast PCB test | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/profile.yml | 201 | #- 8.8.8.8 | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/profile.yml | 221 | cities: | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/profile.yml | 241 | internet-cafe: false | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/profile.yml | 261 | ipv6: 48 | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/profile.yml | 281 | subnet-mask-v6-length: 56 | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/profile.yml | 301 | keep-hunting: false | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/profile.yml | 321 | # peer.uploadSpeed - 您的下载器向该 Peer 上传数据的速率(bytes) - Upload rate to Peer | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/profile.yml | 341 | # For more details, check AviatorScript documentation: https://www.yuque.com/boyan-avfmj/aviatorscript/cpow90 | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/profile.yml | 361 | # Recommended configure this module on WebUI | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/profile.yml | 381 | active-monitoring: | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/profile.yml | 401 | # The maximum allowed download rate when adjusting upload rate, Unit: bytes | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/profile.yml | 421 | # * max = 最大长度 - Max length | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/profile.yml | 441 | ban-duration: 900000 | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/profile.yml | 481 | data-flush-interval: 900000 | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/config.yml | 1 | config-version: 46 | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/config.yml | 21 | # so your support is vital to us. | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/config.yml | 41 | # Allow CORS, should be enabled when you use external WebUI only. | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/config.yml | 61 | # Do you want persist the banlist? If you disable it, PBH will reset the banlist when you restarting it. | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/config.yml | 81 | # 以下信息将被发送到 BTN 实例; | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/config.yml | 101 | # 是否允许 PeerBanHelper 接收来自 BTN 服务器的 Aviator 脚本 | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/config.yml | 121 | # 1 = 使用系统代理 - Use system proxy | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/config.yml | 161 | # 是否使用友好格式的回环地址 IP 映射 | COMMENT |
| LOW | pkg/deb/etc/peerbanhelper/config.yml | 181 | enabled: false | COMMENT |
| LOW | src/main/resources/profile.yml | 21 | module: | COMMENT |
| LOW | src/main/resources/profile.yml | 101 | # Torrent 小于此值不进行检查(单位:字节),对等体可能来不及同步正确的下载进度 | COMMENT |
| LOW | src/main/resources/profile.yml | 121 | # (Sometimes the pisces may break during transfer, client may drop those pisces, we allow client have rewind in reas | COMMENT |
| LOW | src/main/resources/profile.yml | 141 | # IPV6 prefix length, same prefix will trick as a same user | COMMENT |
| LOW | src/main/resources/profile.yml | 161 | # Max duration before ban | COMMENT |
| LOW | src/main/resources/profile.yml | 181 | # The disconnect duration for fast PCB test | COMMENT |
| LOW | src/main/resources/profile.yml | 201 | #- 8.8.8.8 | COMMENT |
| LOW | src/main/resources/profile.yml | 221 | cities: | COMMENT |
| LOW | src/main/resources/profile.yml | 241 | internet-cafe: false | COMMENT |
| LOW | src/main/resources/profile.yml | 261 | ipv6: 48 | COMMENT |
| LOW | src/main/resources/profile.yml | 281 | subnet-mask-v6-length: 56 | COMMENT |
| LOW | src/main/resources/profile.yml | 301 | keep-hunting: false | COMMENT |
| LOW | src/main/resources/profile.yml | 321 | # peer.uploadSpeed - 您的下载器向该 Peer 上传数据的速率(bytes) - Upload rate to Peer | COMMENT |
| LOW | src/main/resources/profile.yml | 341 | # For more details, check AviatorScript documentation: https://www.yuque.com/boyan-avfmj/aviatorscript/cpow90 | COMMENT |
| LOW | src/main/resources/profile.yml | 361 | # Recommended configure this module on WebUI | COMMENT |
| LOW | src/main/resources/profile.yml | 381 | active-monitoring: | COMMENT |
| LOW | src/main/resources/profile.yml | 401 | # The maximum allowed download rate when adjusting upload rate, Unit: bytes | COMMENT |
| LOW | src/main/resources/profile.yml | 421 | # * max = 最大长度 - Max length | COMMENT |
| LOW | src/main/resources/profile.yml | 441 | ban-duration: 900000 | COMMENT |
| 63 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | webui/src/views/oobe/components/addDownloader/index.vue | 102 | config.value.downloader.config.endpoint.replace(/\/$/, '') | CODE |
| CRITICAL | src/main/java/com/ghostchu/peerbanhelper/Main.java | 260 | platform = new com.ghostchu.peerbanhelper.platform.impl.posix.PosixPlatform(); | CODE |
| CRITICAL | src/main/java/com/ghostchu/peerbanhelper/Main.java | 327 | long weekAgo = System.currentTimeMillis() - java.util.concurrent.TimeUnit.DAYS.toMillis(7); | CODE |
| CRITICAL | src/main/java/com/ghostchu/peerbanhelper/Main.java | 476 | //case "qt" -> guiManager = new PBHGuiManager(new com.ghostchu.peerbanhelper.gui.impl.qt.QtGuiImpl(args)); | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | AGENTS.md | 18 | * Once code generation is complete, you must explicitly state that if a pull request is to be submitted, the pull reques | COMMENT |
| HIGH | .github/PULL_REQUEST_TEMPLATE/backend.md | 8 | * [ ] The description of this Pull Request was not generated by AI/agents. All PR submitters are required to manually fi | COMMENT |
| HIGH | .github/PULL_REQUEST_TEMPLATE/backend.md | 23 | * [ ] This Pull Request was completely generated by AI/Agents | COMMENT |
| HIGH | .github/PULL_REQUEST_TEMPLATE/backend.md | 24 | * [ ] A human has manually reviewed the changes generated by AI/Agents and fully understands the relevant modification | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pkg/deb/etc/peerbanhelper/profile.yml | 353 | # All script files will put in data/scripts, you can modify exists scripts or create your own scripts/ | COMMENT |
| MEDIUM | src/main/resources/profile.yml | 353 | # All script files will put in data/scripts, you can modify exists scripts or create your own scripts/ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | webui/src/service/data.ts | 36 | export async function GetTorrentAccessHistoryList(params: { | CODE |
| LOW | webui/src/service/plus.ts | 89 | export function claimRenewFreeLicenseCaptcha(): Promise<CommonResponse<FreeLicenseChallenge>> { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ings/components/profile/components/banRuleListItem.vue | 17 | <a-input v-model="model.content" :placeholder="placeholder"></a-input> | CODE |