adhole, AdHole是一个简单的透明广告和跟踪拦截程序

分享于 

7分钟阅读

GitHub

  繁體 雙語
AdHole is a simple transparent ad and tracking blocker
  • 源代码名称:adhole
  • 源代码网址:http://www.github.com/drbig/adhole
  • adhole源代码文档
  • adhole源代码下载
  • Git URL:
    git://www.github.com/drbig/adhole.git
    Git Clone代码到本地:
    git clone http://www.github.com/drbig/adhole
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/drbig/adhole
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    adhole Build Status

    AdHole是一个简单的透明广告和跟踪拦截程序,用于个人用途。

    它通过提供两个元素来工作: 首先,基于域列表的DNS服务器依赖于实际服务器,或者返回自己的IP地址。 因为它的功能类似于 [AdBlock] (。https://chrome.google.com/webstore/detail/adblock/gighmmpiobklfepjocna mgkkbiglidomhl=en ),但是它的( 你可能会看到一些空白的地方) 和完全透明( 例如 )。 适用于任何浏览器,任何计算机上的任何操作系统,本地或者任何网络上的浏览器。 请注意,你可以像 block 任何顶级域一样。

    我在我的RaspberryPi AdHole路由器上使用,它提供了广告和跟踪阻止所有无线玩具。

    我的编程目标是使它尽可能简单和最小。 因这里,不是一个完整的DNS堆栈( 尤其是解析),我直接在 []byte 片上工作,并尝试重用已经在。 这也是处理二进制协议的一个很小的小冒险。

    变更日志

    • 在查询地图上添加了 locking locking锁定。 无法真正测试它,因为RPi显然是单一内核。

    建筑

    你应该能够通过以下方式在unix系统上完成所有构建:

    
    $ make
    
    
    cd adhole; 
    
    
    gofmt -w *.go; 
    
    
    go build. 
    
    
    cd genlist; 
    
    
    gofmt -w *.go; 
    
    
    go build. 
    
    
    
    

    否则只在 adhole/genlist/ 中运行 go build.

    用法

    
    $./adhole
    
    
    Usage:./adhole [options] key upstream proxy list.txt
    
    
    
    key - password used for/debug actions protection
    
    
    upstream - real upstream DNS address, e.g. 8.8.8.8
    
    
    proxy - servers' bind address, e.g. 127.0.0.1
    
    
    list.txt - text file with domains to block
    
    
    
     -dport=53: DNS server port
    
    
     -hport=80: HTTP server port
    
    
     -t=5s: upstream query timeout
    
    
     -v=false: be verbose
    
    
    
    

    请注意,你需要 root 特权才能在缺省端口上运行它。

    列表格式简单:每行一个域 NAME。 给定域的所有子域都将被阻止,因此不需要使用 *。 域也不应以句点结尾。 解析器也应该对行结尾漠不关心。 示例列表 file:

    
    101com.com
    
    
    101order.com
    
    
    103bees.com
    
    
    123found.com
    
    
    123pagerank.com
    
    
    
    

    我建议使用 domains domains domains domains domains domains domains domains domains。 或者 [this] ( http://pgl.yoyo.org/adservers/serverlist.php?hostformat=nohtml&showintro= 0 &startdate%5Bday%5D=&startdate%5Bmonth%5D=&startdate%5Byear%5D=&mimetype=plaint ext ) 应该作为指向当前列表的直接链接。

    或者你可以使用实验 genlist 工具。 目前我已经实现了对 上面 列表和 EasyList的获取。 如果你有一个更好的/你最喜欢的域名域名,请查看 sources.go 并实现提取器。 ,的原因是 AdBlock ( 或者等效) 使用 AdBlock,因为AdBlock更加微妙,使用EasyList输入生成的列表将使用命令和 imdb.com ( 可能还有更多你关心的网站)。 所以整个事情都是脆弱的,因这里永久的'实验'状态。

    
    $./genlist
    
    
    Usage:./genlist [options] list|all|source source source...
    
    
    
    list - show available sources
    
    
    all - combine all sources
    
    
    source - use only specified source(s)
    
    
    
    $./genlist list
    
    
    There are 2 sources available:
    
    
    01 - pgl - http://pgl.yoyo.org/adservers
    
    
    02 - easylist - https://easylist.adblockplus.org
    
    
    
    $./genlist all>/tmp/blacklist.txt
    
    
    Processing list for pgl
    
    
    Processing list for easylist
    
    
    Got 9829 domains total
    
    
    
    

    示例 systemd 服务 file:

    
    [Unit]
    
    
    Description=DNS blackhole
    
    
    After=network.target
    
    
    
    [Service]
    
    
    ExecStart=/home/user/adhole SecretKey 192.168.0.3 192.168.0.21/home/user/blacklist.txt
    
    
    
    [Install]
    
    
    WantedBy=multi-user.target
    
    
    
    

    多亏了 expvar 包,你可以通过访问 http://proxy.addr/debug/vars 来监视一些统计数据。 以下各项是相关的:

    • stateIsRunning - 如果 false 所有查询都依赖于上游
    • statsQuestions - 接收到的查询数
    • statsRelayed - 中继到实际服务器的查询数
    • statsBlocked - 被阻止的查询数
    • statsTimedout - 超时的中继查询数
    • statsServed - 服务的HTTP请求数
    • statsErrors - 遇到的错误数
    • statsRules - 从黑名单中读取的项目数

    你还可以通过HTTP执行以下操作:

    • /debug/reload - 将重新加载 list.txt 文件
    • /debug/toggle - 打开和关闭阻塞

    你将需要将 &key=YOURKEY 附加到 上面。 将记录未授权的点击。 请注意,你可以将键设置为 "" ( 例如。 一个空密钥),因此禁用身份验证。

    测试:

    • armv6l - amd64,
    • Windows XP - i686

    你可以随意使用github请求或者直接给我发送补丁。

    对于稳定性以及在( 只是好奇) 上运行AdHole的操作系统/平台,我还欢迎。

    Bug/todo

    • 边缘情况( 每个查询有多个问题,每个问题)?
    • 更少的数据切换
    • 仅 IPv4

    版权

    版权所有( c ) 2014 - 2016 Piotr。 Staszewski

    绝对不保证。详情见 LICENSE.txt。


    相关文章