Openwrt 通过设置 Privoxy 躲避 UA 检测
浏览 10695 | 评论 20 | 字数 3136
NiNya
2019年11月21日
  •   文章最后更新于:.
      受某些因素影响,本文章可能具有一定的时效性,请以实际情况为准!另外,欢迎留言~

    Wikipedia:Privoxy是一款不进行网页缓存且自带过滤功能的代理服务器,针对HTTP、HTTPS协议。通过其过滤功能,用户可以保护隐私、对网页内容进行过滤、管理Cookie,以及拦阻各种广告等。Privoxy可以单机使用,也可以应用到多用户的网络。修改HTTP请求头的字段,如Referrer和用户代理(User Agent),从而隐藏用户上一个查看的网页和用户正在使用的浏览器。移除网络广告(可用Adblock Plus或uBlock Origin替代)

    安装

    首先我们要做的就是在我们的 openwrt 设备上安装好 privoxy.

    opkg update
    opkg install privoxy
    opkg install luci-app-privoxy
    opkg install luci-i18n-privoxy-zh-cn

    运行

    点击以下按钮开始运行 Privoxy

    配置

    1. 确保这两个地址是和你 openwrt LAN 口同一网段(因为我的 openwrt 设备地址是192.168.1.1,所以我下面的都是以192.168.1.1为例子).第一个是你 Privoxy 的监听地址,默认端口是 8118.请注意不要和其他应用冲突了。然后点击保存&应用
    2. 在“文件和目录”选项卡下找到这个两个位置,添加上用户自定义 Action 和 Filter 文件。
    3. 使用 WinSCP 连接到你的 openwrt 设备,然后前往/etc/privoxy目录,修改user.actionuser.filter这两个文件
    4. user.action添加以下内容
    {+client-header-filter{androidfilter}}
    /
    1. user.filter添加以下内容
    CLIENT-HEADER-FILTER: androidfilter Replace all "Android" with "Windows"
    
    s@\b(Android|iP\w+)\b@Windows NT@ig

    或者索性全部替换掉!(这个是把所有的常见设备 UA 改成 MAC 的,可能会出现问题,谨慎使用):

    CLIENT-HEADER-FILTER: androidfilter Replace all "Android" with "Windows"
    
    s@\b(Android\s\d+|CPU iP\w+\s(OS)\s\w+\s(like Mac OS X)|CPU OS\s\w+\s(like Mac OS X)|Windows NT\s\d+(.)\d|Linux|X11)\b@Macintosh@ig

    1. 在进行下一步操作之前,请先用自己的手机设置 HTTP 代理,以保证 Privoxy 顺利运行.

    ↑ 以安卓手机设置为例

    ↑ 这是设置成功后的样子,原来的 Android 被替换为了 Windows.

    1. 使用 iptables 将所有 http 流量转发给 privoxy 处理。首先就是在杂项选项卡下,勾选Accept intercepted requests
    2. 接着进入你的 openwrt 防火墙,然后在自定义设置里输入:
    iptables -t nat -N PrivoxyUA
    iptables -t nat -A PREROUTING -i br-lan -p tcp -j PrivoxyUA
    iptables -t nat -A PrivoxyUA -d 0.0.0.0/8 -j RETURN
    iptables -t nat -A PrivoxyUA -d 10.0.0.0/8 -j RETURN
    iptables -t nat -A PrivoxyUA -d 127.0.0.0/8 -j RETURN
    iptables -t nat -A PrivoxyUA -d 169.254.0.0/16 -j RETURN
    iptables -t nat -A PrivoxyUA -d 192.168.1.0/24 -j RETURN
    iptables -t nat -A PrivoxyUA -d 172.16.0.0/12 -j RETURN
    iptables -t nat -A PrivoxyUA -d 192.168.0.0/16 -j RETURN
    iptables -t nat -A PrivoxyUA -d 224.0.0.0/4 -j RETURN
    iptables -t nat -A PrivoxyUA -d 240.0.0.0/4 -j RETURN
    iptables -t nat -A PrivoxyUA -p tcp --dport 80 -j REDIRECT --to-ports 8118

    点击保存&应用.

    测试效果

    最后,你就可以看下 UA 是否真的被修改成功了.
    有两个测试地址:

    1. HTTP 测试地址(这个是你访问 HTTP 网站时的 UA, UA 检测设备是能看到的):http://www.atool9.com/useragent.php 或者
      http://lilynas.com/ua.php
    2. HTTPS 测试地址(这个是你访问 HTTPS 网站时的 UA,校园网 UA 检测设备是无法看到的):
      https://ie.icoa.cn/

    效果图:

    ↑ 这个是 HTTP 的

    ↑ 这个是 HTTPS 的

    参考

    本文作者:NiNya
    本文链接:https://lilynas.com/archives/644/
    最后修改时间:2020-12-15 17:36:56
    本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!
    评论
    与本文无关评论请发留言板。请不要水评论,谢谢。
    textsms
    支持 Markdown 语法
    email
    link
    评论列表
    已有 20 条评论
    kamw
    2021-11-15 05:12
    opkg install luci-app-privoxy 这步 提示opkg install luci-app-privoxy。 设备N1
    2021-11-15 17:42
    @kamw 麻烦粘贴下完整提示
    kamw
    2021-11-15 21:52
    @NiNya 原来粘粘重复了.........提示是这个* opkg_install_cmd: Cannot install package luci-app-privoxy.
    kamw
    2021-11-15 22:11
    @NiNya 其实我是搞这个直播源https://cdn.hkdtmb.com/hls/99/index.m3u8
    它有时段限制,限制时段只能网页观看(用梯子的话没限制,但自己没有稳定梯子)
    应该设置了网页UA检测。
    不知道这插件能不能实现https://cdn.hkdtmb.com请求时伪装网页UA
    2021-11-16 03:12
    @kamw 尝试下同一时间更换另一个浏览器看看是 IP 限制还是 UA 限制哦~(我感觉更像是 IP 限制的样子
    2021-11-16 03:15
    @kamw 这个提示还是太短了,不够完整。没法定位问题的
    kamw
    2021-11-16 05:16
    @NiNya root@OpenWrt:~# opkg install luci-app-privoxy
    Unknown package 'luci-app-privoxy'.
    Collected errors:opkg_install_cmd: Cannot install package luci-app-privoxy.
    kamw
    2021-11-16 05:26
    @NiNya 浏览器(网页端)没有作出限制,墙内外都正常观看。但把这个源地址m3u8放到播放器就提示限制(网页端和播放器都是同一M3U8)应该不是IP限制吧!!IP没改过 网页端就正常 播放器就限制
    kamw
    2021-11-17 19:11
    @NiNya 刚又弄了一下,好像还真是IP限制。我用V2rayN开节点 用播放器正常观看不提示受限,但关掉节点后发现没有断开无比流畅(晚上高峰期节点变慢了不能一直挂着看)
    估计是源地址打开时简单做个IP检测就放行了
    我在想我N1下openclash能不能做个规则 这个源地址 请求时 让它接入节点后 设置个时间就断开它(这样TV也能看)
    openclash也是刚接触。站长会不会,帮忙弄下 感谢
    2021-11-19 16:05
    @kamw 加入规则的话比较简单,参考 clash 的配置文件写就好了,但定时开关貌似 openclash 还没有提供这个功能,需要自己去写个脚本定时开关
    bbbooo
    2020-10-18 16:28
    我想问下,用privoxy修改ua成功了,但是在设备刚刚接入路由器的时候访问ua检测会显示原ua。再次刷新后又会更改为更改后的UA。往往就是这个短暂的瞬间被检测代理了,想问下如何解决,感谢!
    xixi
    2020-08-09 13:39
    privoxy换ua不是最合适的方式,原因,效率低,还有很多特殊的问题,已经影响到网络的正常使用了
    CETOS
    2020-09-05 00:39
    @xixi 请问有什么好的办法吗?我试过tinyproxy了,那个只能增加UA,不能删改。
    随心
    2020-06-27 01:51
    最后一步。验证的那个网页显示502,没有显示UA。请问是怎么回事啊
    2020-07-18 19:04
    随心
    2020-06-26 17:11
    我安装了软件包,在哪儿使用啊。小白一枚,真心不了解openwrt,以前用的老毛子