{"success":true,"message":null,"data":"## @NAME PeerID/ClientName 伪装检查\r\n## @AUTHOR PBH-BTN Community\r\n## @CACHEABLE true\r\n## @VERSION 1.0\r\n## @THREADSAFE true\r\n\r\n\r\nif(isBlank(peer.clientName) || isBlank(peer.peerId)) {\r\n return false; ## 二元组任意为空都不能继续检查,需要下载器支持\r\n}\r\n## 全部转换为小写\r\nlet peerIdLowercase = toLowerCase(peer.peerId);\r\nlet clientNameLowercase = toLowerCase(peer.clientName);\r\n## 映射表\r\nlet table = seq.map(\r\n 'aria2explorer', '-ae',\r\n 'bitcomet', '-bc',\r\n 'transmission', '-tr',\r\n 'qbittorrent', '-qb',\r\n 'bitlord', '-bl',\r\n 'bitwombat', '-bw',\r\n 'deluge', '-de',\r\n 'frostwire', '-fw',\r\n 'gospeed', '-gp',\r\n 'adm', '-ad',\r\n 'bitspirit', '-sp',\r\n 'aria2', 'a2',\r\n 'utorrentmac', '-um',\r\n 'utorrent mac', '-um',\r\n 'μtorrent', '-ut',\r\n 'utorrent', '-ut',\r\n 'tixati', 'tix',\r\n 'gopeed dev', '-gp'\r\n);\r\n## 伪装检查\r\nfor tableName in seq.keys(table) {\r\n if(string.startsWith(clientNameLowercase, tableName)){\r\n if(string.startsWith(peerIdLowercase, seq.get(table, tableName))){\r\n return false;\r\n }else{\r\n ## p('peerId='+peerIdLowercase+', clientName='+clientNameLowercase + ', excepted='+ seq.get(table, tableName));\r\n return 'Peer reporting: PeerId='+peerIdLowercase+', ClientName='+clientNameLowercase + ', But PBH excepted='+ seq.get(table, tableName);\r\n }\r\n }\r\n}\r\nreturn false;"}