用 ss-redir 或 redsocks 搭建透明网关

原生的Android刷机后第一次开机系统初始设置要连接谷歌服务器,如果没有透明代理就很麻烦,进不了桌面。这里可以通过一台Linux的机器(我用的是第一代树莓派)来达到透明代理的作用。平常情况下手机,平板和机顶盒也可以通过透明代理上网,简化配置。

环境要求

手机和树莓派在同一个局域网,并且可以相互访问,手机的WiFi连接,树莓派可以是无线网络也可以是网线连接(没有无线网络的第一代树莓派即可)。有可用的SS / SSR或者SOCKS5代理。

用SS-redir的搭建带SS代理的端口

如果是SSR用shadowsocksr-libev里的SS-再导向。注意后者多了一个r。我用的是SSR,在树莓派上自己编译的shadowsocksr-libev ,下面以SSR为例,SS类似。
配置ss-redir.json,参数和配置SSR一样,注意:"local_address":"0.0.0.0",这个必须为0.0.0.0。如果同一个机器上也运行SSR,local_port要用不同的端口,如SSR用1081,ss-redir用1088,下面配置里会用到1088这个端口。
运行SS-再导向,-v会显示一些日志信息:
./ss-redir -v -c ss-redir.json  
调试完成后,实际运行可以用:
nohup ./ss-redir -c ss-redir.json > /dev/null 2>&1 &  

启用内核转发

使用iptables的转发需要打开内核的IPv4转发功能,编辑/etc/sysctl.conf中,设置把net.ipv4.ip_forward = 1,让更新实时生效:
sudo sysctl -p /etc/sysctl.conf  

设置iptables的,IPSET转发

设置iptables的的目的是将本机特定IP的流量转向β-redir的监听的端口,这个端口是带代理的,这样特定IP的流量就自动代理了。可以配置跳过无需代理的中国IP.iptables执行要根权限,可以切换到根用户,或者用须藤方式运行。
先获取中国IP范围,保存文件是cn.zone。
wget -P . http://www.ipdeny.com/ipblocks/data/countries/cn.zone  
创建china.ipset脚本,内容如下:
# Destroy ipset if it already exists  #sudo systemctl stop iptables.service  sudo ipset destroy china    # Create the ipset list  sudo ipset -N china hash:net    # remove any old list that might exist from previous runs of this script  #rm cn.zone    # Pull the latest IP set for China  #wget -P . http://www.ipdeny.com/ipblocks/data/countries/cn.zone    # Add each IP address from the downloaded list into the ipset 'china'  for i in $(cat ./cn.zone ); do ipset -A china $i; done  
运行脚本创建中国的IPSET,脚本会把cn.zone文件里的IP段都加到中国的IPSET里。
sudo bash china.ipset  
创建的iptables命令脚本
iptables -t nat -N REDSOCKS  # 在 nat 表中创建新链    iptables -t nat -A REDSOCKS -p tcp --dport 28888 -j RETURN  # 28888 是 ss 代理服务器的端口,即远程 shadowsocks 服务器提供服务的端口,如果你有多个 ip 可用,但端口一致,就设置这个    iptables -t nat -A REDSOCKS -d 11.11.11.11 -j RETURN  # 11.11.11.11 是 ss 代理服务器的 ip, 如果你只有一个 ss服务器的 ip,却能选择不同端口,就设置此条    iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN  iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN  iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN  iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN  iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN  iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN  iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN  iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN  # 过滤局域网IP    iptables -t nat -A REDSOCKS -p tcp -m set --match-set china dst -j RETURN  # 过滤国内IP段,IP保存在china ipset里    iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 1088  # 1088 是 ss-redir 的监听端口,ss-local 和 ss-redir 的监听端口不同,配置文件不同    iptables -t nat -I PREROUTING -p tcp -j REDSOCKS  # 在 PREROUTING 链前插入 REDSOCKS 链,使其生效  
把上面的命令保存成iprules.sh文件,运行设置到系统里。
sudo bash  iprules.sh  
如果设置错误,清理iptables的设置用下面的命令:
sudo iptables -t nat -F  

手机端设置

手机端WiFi连接,选择静态IP,网关填写树莓派的IP。如果正常,此时手机不用配置代理即可正常访问Google服务器。

验证国内IP过滤

访问ip138淘宝IP,看看IP是不是国内IP,如果是国内IP就说明国内IP过滤成功了,国内IP没有走代理;相反如果是SSR服务器的IP,说明国内IP过滤配置失败了。

用redsocks2替代β-redir的

树莓派上本来跑了个SSR,环境太恶劣,经常需要tcping找可用的地址,重启SSR,不想再维护β-再导向的稳定性了,所以切换到redsocks了,redsocks可以直接用SSR提供socks5的代理,只维护SSR稳定可用即可。
没有用原版redsocks,使用了修改版的redsocks2,下载源代码编译略过。
redsocks2的配置config.json如下。如果socks5的代理是本机,ip = 192.168.1.104;行改成ip = 0.0.0.0;。文件配置里log_debug log_info daemon调试的时候可以根据需要配置上分类中翻译关闭或者,daemon = on是后台运行。这里redsocks监听的端口也配置成1088。
base {          log_debug = off;          log_info = off;            log = "file:/home/pi/redsocks/log.txt";            daemon = on;            redirector = iptables;  }    redsocks {          local_ip = 0.0.0.0;          local_port = 1088;            listenq = 128;            ip = 192.168.1.104;          port = 1081;            type = socks5;            autoproxy = 0;          timeout = 10;    }    ipcache {      cache_size = 4;      stale_time = 900;      port_check = 1;      cache_file = "/tmp/ipcache.txt";      autosave_interval = 3600;  }  
运行redsocks2
sudo ./redsocks2 -c ./config.json  
据说redsocks稳定性可能有些问题,配置的cron计划任务,每天凌晨3点重启一下好了。

IPSET设置速度优化

sudo bash china.ipset设置IPSET后,可以把IPSET设置保存起来,后面再恢复速度就快很多。
sudo ipset save > ipset.save.txt  
把下面脚本保存为ipset.restore.sh,每次开机设置一次。sudo iptables -t nat -F三条的含义是清空iptables nat配置,不然多次执行ipset会提示正在使用,禁止毁灭。建议:每次应该都是先设置ipset,再设置iptables的。
#!/bin/bash    sudo iptables -t nat -F  sudo iptables -t nat -X  sudo iptables -t nat -Z    sudo ipset destroy china  sudo ipset restore < ipset.save.txt  

其他说明

  • 不支持UDP流量转发,DNS污染用其他方法解决。我用的dnsmasq + overture.dnsmasq做缓存,推动做域名翻墙和国内IP分流.overture国内使用dnspod的DNS服务,国外使用8.8.8.8,这两个DNS服务都支持EDNS。
  • iptables的规则可以SH脚本运行,或者iptables-save命令后用的iptables-恢复来加载

参考资料

  1. ss-redir透明代理
  2. linux用shadowsocks + iptables + ss-redir实现全局代理
  3. Ubuntu的编译运行Redsocks2实现透明代理
  4. 使用iptables,ipset的全局智能代理

墙与梯的较量 —— 那些年我们一起用过的翻墙手段


来源: https://blog.yandere.moe/moe/gfw-vs-proxy/97.html

在某个 Telegram 群讨论到了现在很多 10 多岁的年轻人都学会翻墙了,想起我小的时候,大概也是在 10 岁左右第一次翻墙。作为经历过多次墙与梯的升级的网虫,把这个写下来也算是一个对童年的回忆了……
1. HTTP 代理 & SOCKS 代理年代:
早期的墙屏蔽网站是通过 IP 地址和 DNS 污染进行定点屏蔽,那时候被屏蔽的网站也没像现在这么多。大部分被屏蔽的都是法轮功的网站,一般人也用不到。那个时候可以很容易的通过 HTTP 代理进行审查规避。那个时候有一款浏览器不知道大家听说过没,叫 MyIE,有一个很方便的切换代理功能,由于作者是法轮功成员,他开发的浏览器的主页也有提供很多 HTTP 代理来翻墙用(BTW:根据网络上的传言,作者已经死于 2002 年 5 月 13 日。)不过根据这个软件开发的日期以及维基百科,可能在上个世纪 90 年代就已经有墙了。不过我第一次上网是 2004 年,比这更之前的我是不知道了,欢迎有更老网龄的网虫在评论区回忆一下?
早期的翻墙软件——代理猎手(Proxy Hunter):
确切地说这个并不能被称为翻墙软件,这只是一个帮助你搜索可用 HTTP 代理的软件,利用搜索出来的 HTTP 代理来完成翻墙操作。
网页代理
相信这个大家也用过,一个网站,把网址输入进去就能透过代理访问被屏蔽的网站了。
现在情况:
在不知道哪次的 GFW 升级过程中,HTTP 代理和 SOCKS 代理已经完全可以被检测(毕竟没有加密)并阻断,于是这种翻墙手段只能留在我们的回忆中了。。。
至于网页代理,聪明的开发者想到了一个方法——在发送数据包之前将网页内容 BASE64 编码了一下,这样 GFW 就无法探测被封锁的关键字了,这个方法在 GFW 的又一次升级之后而成为了历史…
2. 修改 DNS 时代:
同样是在墙的早期阶段,GFW 还没有解析 DNS 数据包的能力,而且那时候 ISP 也比较流氓。比如在你访问一个不存在的域名的时候,(北京地区)联通会把你劫持到“北京宽带网 BBN”这个网站的一个广告页面,然后展示给你一些很黄很暴力的广告。那时候就有人提议修改 DNS,不再使用 ISP 提供的 DNS。
208.67.222.222 / 208.67.220.220
8.8.8.8 / 8.8.4.4
这两组神圣的 IP 还有人记得么?修改用境外的 DNS 之后也起到了一定的翻墙效果。
现在情况:
GFW 的某次升级之后可以解析并篡改 DNS 包了,于是此方法失效,淡出了人们的视线中…
3. 自由门&无界浏览时代:
之后不知道从什么时候开始,各位的邮箱里就经常收到一个名为《退X保平安》的邮件,里面附带了一个自由门软件。于是自由门这个翻墙软件开始流行了起来。(题外话:是不是你的第一次翻墙就是用的自由门?)
无界浏览和自由门一样,都是法轮功组织开发的
当然这个软件不仅仅只有中国用户在使用,在其他国家如:伊朗、叙利亚、阿联酋等有网络审查国家的用户也有在用。
现在情况:
仍然处于活跃开发过程中,但是身边用的人基本没有了,这个软件自带内墙(屏蔽法轮功组织不喜欢的网站、色情网站等)、不开源、连接不稳定而饱受诟病而渐渐的消失在了人们的记忆中…
4. HTTPS 代理年代:
HTTPS 代理,比 HTTP 代理多了个 S,代表的东西可就大不同了。那时候的 GFW 是无法识别 SSL 流量的,所以网页代理以及 HTTP 代理都在这个 S 的光环下复活了。
现在情况:
仍然可用,比如石斑鱼的翻墙软件就是利用 squid 产生一个 HTTPS 代理进行翻墙的,网页代理也藏在加密的 HTTPS 之后,这对 GFW 的维护工作产生了不利的影响,因为不像 HTTP 那样可以直接获取到内容。不过在某次的 GFW 升级之后,特征比较明显的 HTTPS 代理被 active probe 检测到而屏蔽,只剩下那些藏在子目录的网页代理以及增加了认证(不管是证书认证还是密码认证)的 HTTPS 代理可用…
5. 修改 hosts 文件年代:
在上面提到的修改 DNS 规避审查的方法已经无效了,又有别有用心的群众找到了一些网站可用的 IP,并修改到 hosts 文件进行翻墙。这种方法实际是钻了个 GFW 没有发现这些 IP 的空子。
现在情况:
事实上这个方法辉煌了 2 次,第一次是把网站的 IP 放到 hosts 里然后通过 HTTPS 访问,之后 GFW 以主动收集IP并屏蔽的方法废掉了此方法。第二次是 CDN 的普及,很多网站用了如 CloudFlare 的 CDN,一个 IP 被封了,可以 hosts 到另一个 CloudFlare 的 IP 然后以 HTTPS 继续访问。随后在 GFW 的某次升级后可以检测到证书 SNI 并阻断之后淡出了人们的视线…
6. PPTP 年代:
Windows 和 iOS 等系统自带支持的 VPN 协议——PPTP。可以说是最便捷的方式了,不用下载额外的软件,只需要一个 IP、用户名、密码就可以翻墙。不过这么便捷的翻墙软件朝廷肯定是看不下去的啦。。。
现在情况:
PPTP 已经彻底被干扰,无论你怎么设置都是连接不上的哦,PPTP 实在是死的不能再死了,而且加密强度也不高,而渐渐的被人们所遗忘…
7. SSH 翻墙年代:
不知道从什么时候开始,各路折腾 VPS 的折腾党就猛然发现:SSH 可不仅仅是安全管理服务器的工具,更可以用于翻墙。
于是 SSH 翻墙的方法在一瞬间火了起来。
ssh -qTfnN -D 7070 fq@blog.yandere.moe <– 这是我学会的第一句比较长的 linux 命令
现在情况:
在某次的 GFW 升级后,可以根据流量大小识别你是在管理服务器还是在翻墙。之后,那时候还各种百度谷歌搜索免费 SSH 账号和国外的提供免费空间+ SSH 的平台,翻墙圈子里互相帮助共享 SSH 账号的场景就一去不复返了…
8. 赛风年代:
赛风是多伦多大学公民实验室开发的一款开源翻墙软件,基本原理就是利用打了混淆补丁的 SSH 进行翻墙。发邮件给赛风的邮箱或者去官网下载就能获得该软件了。
(图为旧版赛风)
支持很多国家的服务器
现在情况:
仍然可用,速度一般,比较稳定,身边很多人在用这个免费且开源的翻墙软件。客官不妨下一份留作备用?
9. 西厢计划:
这个可以说是真正的翻墙软件而非代理软件,因为这款软件并没有使用任何代理服务器进行翻墙。相反,这个软件的开发人员发现了墙在编写的时候的一些漏洞,并利用这个漏洞翻墙。
现在情况:
由于西厢计划宗旨是说明这个漏洞,而不是一款可以大规模使用的翻墙软件,所以使用的人很少,而且需要懂一些 Linux 才可以使它工作。在某次的 GFW 核心模块升级之后失效。
10. GoAgent、XXNET 翻墙:
GoAgent 是一个可以运行在云平台上的代理软件,大多数用在 Google Appspot 上,也是很老牌的。那时候 Google 还没有被屏蔽,很多人申请一堆 appspot 然后 GoAgent 负载均衡翻墙,然后小圈子里共享高速的 IP 地址。然后有了另一个 fork 叫 XXNET,自带扫描 IP 的功能以及集成了好心人提供的节点,也是基于 GoAgent 的。
现在情况:
随着 Google 所有 IP 被 GFW 河蟹,这种方法也消失在了历史的长河中。
11. Lantern、FireFly、Meek 年代:
自从很多大型服务上了 CDN 业务(Amazon、Azure 等),一群充满研究精神的人发明了一个新的方法“依附的自由(Collateral Freedom)”,通过将目标地址放入 CDN 服务的 Host 头中,GFW 只能检测到访问了 CDN,而无法检测到真正的目标地址。而很多网站都在使用 CDN,无法将所有的 CDN 都墙了。
目前使用本方法的:Lantern、FireFly、Tor Browser – Meek
12. fqrouter 翻墙:
fqrouter,顾名思义 翻墙路由器。是一个在Android平台的翻墙软件,使用GoAgent进行翻墙。就连人民日报记者都在用这款软件。
现在情况:
其作者在 Twitter 上宣布停止开发 fqrouter 了。感谢 fqrouter 作者为翻墙事业作出的贡献:)
其作者在 Twitter 宣布了:“鉴于 RGB 事件的疯狂删帖,fqrouter 即将重启开发。”,期待作者的重出江湖。
13. OpenVPN 年代:
墙再怎么升级也挡不住向往自由的人们,于是开源软件 OpenVPN 又成为翻墙的主力军。OpenVPN 支持高强度的加密,不过就是特征太明显了,你看,又被屏蔽了。。。
现在情况:
差不多已经没办法用了,因为特征是在太明显了,GFW 很轻松就会探测到 OpenVPN 服务器然后加以封锁。不过通过修改配置文件或加混淆补丁等方法还是可以用的。
14. Cisco AnyConnect 年代:
虽然 AnyConnect 和 OpenVPN 一样,有着很明显的特征,但是 AnyConnect 被很多跨国大公司所使用,所以 GFW 也不敢那么草率的屏蔽掉 AnyConnect。也是一种“依附的自由”
现在情况:
截至目前仍然可用,不过配置起来太麻烦。少数技术流会用这个翻墙…
15. VPNGate 年代:
说到 VPNGate,不得不提到 SoftEther VPN,很早之前这个 SoftEther 提供一个日本的学术 VPN,当然在天朝就是用于翻墙了。可能是受到了 SoftEther 的启发,VPNGate 这个软件被日本筑波大学开发了出来,准确地说 VPNGate 是 SoftEther VPN 的一个插件,用了 SoftEther VPN 的 HTTPS 流量模仿。
现在情况:
在时断时续中仍然坚挺,可以作为备用使用。不过要记得更新为最新版本哦。
16. 后起之秀 —— Shadowsocks、V2Ray、ShadowsocksR、ShadowsocksRR…
Shadowsocks:相信大家都不陌生,作者 clowwindy 是全国首例因为开发翻墙软件被喝茶的。之后项目交由另外的人维护。(向 clowwindy 致敬)
V2Ray:在 Shadowsocks 作者被喝茶之后由一名在国外的华裔程序员开发,目的是翻越防火长城,是一个定制性很高的翻墙软件,算是一个“翻墙框架”。基于这个框架你可以开发出属于自己的翻墙协议。目前支持 VMess 协议以及 Shadowsocks 协议、支持流量混淆、支持 KCP。就是配置起来麻烦点,但是配置好之后很好用。
ShadowsocksR(R):是一个 Shadowsocks 的 fork,作者说 ShadowsocksR 的目的是在于加强混淆以应对 QoS。ShadowsocksRR 是在 ShadowsocksR 作者停止更新之后的另一个fork,目前观望中… 
17. 新起之秀 —— WireGuard
 
WireGuard 可以创建快速、现代、安全的 VPN 隧道。
通过 WireGuard 组建起来的 VPN ,借助其中一台可以科学上网的电脑,能使 VPN 内所有其它电脑都具有科学上网的能力。
18. 结尾:
如果有发现有缺少的在记忆中的翻墙软件可以留言补充哦。
翻墙的时候不要忘记那些曾经为了自由的网络而默默付出的人们
即使再高的墙也阻止不了追求自由的人们,希望我们能看到真正的互联网。
Across the Great Wall we can reach every corner in the world.

Startpage——保护隐私的搜索引擎,搜索质量等同 Google

文章目录
★引子
★为啥俺不用 Google 的搜索功能?
★为啥俺选择 Startpage?
★为啥 Startpage 可以实现【高质量】的搜索?
★Startpage 的额外好处——【禁用 JS 脚本】也可以正常使用
★Startpage 的额外好处——对【Tor 代理】很友好
★Startpage 的额外好处——【没有】使用 HTTP 协议的 referer 字段
★Startpage 的额外好处——【不用】cookie 也可以记住用户偏好
★如何【更安全地】使用 Startpage?
★为啥俺【不】推荐 DuckDuckGo(DDG)?

★引子


  很多年来,俺一直用 Startpage 来代替 Google 进行 Web 搜索。一直想写篇博文来介绍一下,但又一直忘了。
  前几天,Startpage 的界面作了一次重大改版,让俺终于再次想起之前一直忘记的事情。

不见图 请翻墙

★为啥俺不用 Google 的搜索功能?


  俺也算是 Google 搜索的老用户了,大约2000年左右开始用它(具体时间已记不清)。
  但随着时间的推移,俺越来越注重隐私保护,也就越来越想摆脱 Google 的搜索功能。这其中的原因,俺已经唠叨很多次了,今天再次解释一下:
  Google 的商业模式基于【在线广告】(Google 90% 以上的利润都来自于此)。为了做到在线广告的【精准投放】,Google 必须尽可能详细地了解每一个使用 Google 产品/服务的网民。所以 Google 有强烈的动机,想要收集每个用户的隐私。更详细的解释,可以看之前的博文:《弃用 Chrome 改用 Firefox 的几点理由

  顺便说一下:
  百度更加不能用!!!俺在上述这篇博文中是这样评价百度的:
  百度同样是一家搜索引擎公司,但是百度比 Google 更恶心百倍。Google 虽然喜欢收集用户隐私,但最起码人家 Google 的搜索结果是【客观的】。而百度的搜索结果是可以花钱买滴(还美其名曰"竞价排名")。这么说吧,如果你针对某个关键词向百度出了高价,那么网民在百度上搜索该关键词的时候,你的网站就会排在搜索结果的前面。
  就是靠着"竞价排名",莆田系与百度这两个大流氓完美地勾搭在一起。如果说莆田系医院是垃圾,那百度这家公司就是垃圾中的垃圾;如果说莆田系的老板是人渣,那百度的老板李彦宏就是人渣中的人渣。
  莆田系加上百度,不知毁掉了多少家庭,不知让多少病患人财两空。李彦宏的百亿身家,就是靠人血馒头堆出来的。当年的魏则西事件,只不过是碰巧被曝光的沧海一粟。下面是俺当年发的《每周转载》。
每周转载:魏则西事件、百度广告、莆田系、军队医院(各方报道及网友评论)


★为啥俺选择 Startpage?


  由于 Web 搜索是经常要用的(很多网民每天都会用到),而 Google 搜索的牛逼程度(搜索的精准性),又是别的搜索引擎【无法替代】滴!于是就产生一个很尴尬的矛盾。咋办捏?
  俺尝试过一些不同的方案,最后终于选用 Startpage 作为"Google 搜索"的替代品。
  选择它,最重要的一个原因是:Startpage 在保护隐私的同时,能够做到与 Google【同等质量】的搜索结果
  如果你对 Startpage 搜索引擎还不太了解,可以先看维基百科的"这个页面"。
  另外,Startpage 也得到了"粉碎棱镜"网站的推荐,请看"这个页面"。(注:这个"粉碎棱镜"网站,是在斯诺登曝光"棱镜门"丑闻之后成立的。专门推荐一些【对抗政府监控】的软件和网站)


★为啥 Startpage 可以实现【高质量】的搜索?


  在本文的标题中,俺提到:搜索质量等同 Google。Startpage 它是如何做到的捏?很简单,因为它的后台用的就是 Google 搜索。简单地说就是:当你在 Startpage 的界面上进行搜索,Startpage 会把你的搜索关键字发送给 Google 的搜索服务器,然后再把 Google 的搜索结果展示给你看。通俗地说:Startpage 就好比是一个【搜索引擎的代理】。
  由于 Startpage 后台使用的是 Google,所以 Google 搜索的一些常用语法,Startpage 也支持。比如说:用 site: 语法来限定只搜索特定网站。(如果要更详细地了解 Google 搜索的语法,可以参见《Google 搜索的基本语法》)

  说到"Startpage 后台使用 Google",某些同学可能会担心其中的隐私风险?下面俺来解答一下:
  虽然 Startpage 后台用的是 Google 搜索,但 Startpage 服务器发给 Google 服务器的信息【只有搜索关键字】。换句话说,Google 服务器拿到这些搜索关键字,并不知道这些搜索请求是哪个人发起的。如此一来,Google 也就【无法】窥探你的隐私。
  某些安全意识比较高的同学,可能还是会问:你怎么知道 Startpage 是否会暗中记录用户信息?关于这方面的担心,俺在本文倒数第二个章节会做进一步的介绍。


★Startpage 的额外好处——【禁用 JS 脚本】也可以正常使用


  如今很多网站越来越重度依赖 JS 脚本。一旦浏览器禁用了 JS 脚本,这些网站就无法正常显示。
  Startpage 到目前为止,一直都可以在禁用 JS 脚本的方式下,【正常使用】。
  (关于"禁用 JS 脚本"有啥好处,本文倒数第二个章节会提到)


★Startpage 的额外好处——对【Tor 代理】很友好


  经常用 Tor 的同学应该会发现,很多网站对 Tor 代理是【不友好】的。当使用 Tor 访问这些网站,经常无法正常打开(显示一个报错的页面)。Google 搜索尤其如此。相比之下,Startpage 对 Tor 用户是很友好滴。
  以俺本人为例:
  俺的上网环境是【全程走 Tor 代理】。显然,当俺使用 Startpage 进行搜索的时候,也是走 Tor 代理。这么多年来,俺很少碰到报错的情况(印象中,好几个月才会碰到一次)。从这点来看,Startpage 算是对 Tor 很友好滴。


★Startpage 的额外好处——【没有】使用 HTTP 协议的 referer 字段


  很多搜索引擎(包括以隐私安全著称的 DuckDuckGo)都会在【外链跳转】中加入 referer 字段,这会引发潜在的隐私风险。而 Startpage【没有】使用这个字段。
  考虑到很多读者是技术菜鸟,俺稍微解释一下:

◇啥是 referer 字段?


  通俗地说:这是一个 HTTP 请求(HTTP request)的属性字段,用来表示当前页面是从哪里跳转过来的(Web 跳转的起始页面)。Web 服务器接收到 HTTP 请求,可以根据其中的 referer 字段,了解用户是从哪里跳转过来的。
  更详细的说明请看"维基百科"。

◇搜索引擎的外链使用 referer 字段,会有啥风险?


  当你使用搜索引擎,找到某个你想要的网站,然后你通常会直接点击该网站的链接,跳转到该网站。
  如果搜索引擎启用了 referer 字段,当你跳转到目标网站,目标网站的服务器就会知道你是从某某搜索引擎跳转过来的。更严重的是,大部分搜索引擎的"搜索结果页面"的网址,会包含【搜索关键字】。所以,目标网站如果(通过 referer 字段)拿到搜索引擎页面的网址,就可以知道你是搜了哪些关键字,才跳转过来的。

◇小知识:通过定制 Firefox,禁用所有点击的 referer 字段


  如果你用的是 Firefox 浏览器,可以通过它提供的"配置界面"(about:config)或"配置文件"(user.js),"完全禁用"或"部分限制"referer 字段。
  具体的配置项名称及说明,可以参考 Mozilla 官网的"这个 wiki 页面"。


★Startpage 的额外好处——【不用】cookie 也可以记住用户偏好


  Startpage 提供了若干偏好设置(也叫"用户选项")。你可以定制"界面显示的颜色/风格",也可以定制"使用哪个国家的服务器"......诸如此类。

◇大部分网站如何保存用户的个性化设置?


  对于用户的偏好设置,大部分网站通常采用两种方式保存:
1. 保存在客户端(使用 cookie)
2. 保存在服务端(需要用户注册和登录)

  这两种方式都不太爽,都有潜在的隐私风险。

◇Startpage 如何保"存个性化设置"——基于 cookie 的方式


  Startpage 也提供 cookie 的方式。据它官方的说法:默认情况下是【不】保存 cookie 的;只有当用户进入"Settings 界面"进行个性化设置,并点了界面底部的 Save 按钮,才会记录唯一的一个 cookie。

◇Startpage 如何保存"个性化设置"——【不用】cookie 的方式


  由于 Startpage 是强调隐私防范滴,所以它还提供了一种【无 cookie】的方式来保存用户的个性化设置。当你进入"Settings 界面",修改了各种配置选项后,你【不要】点击 Save 按钮。然后滚动到界面底部,会看到一行字:
Save your settings without a cookie
  如果你的浏览器【没有禁用 JS】
  在这行字下方会显示两串很长的网址(短的那串是编码过的,长的那串是没有编码的)。你随便挑选其中一个网址,加入浏览器的书签,就 OK 了。下次只要点击这个书签,打开 Startpage 界面后,Startpage 就可以根据网址中的参数,知道你的个性化设置。

  如果你的浏览器【禁用了 JS】
  你会看到一个 Generate URL 按钮。点击该按钮之后,按钮下方会显示两串网址(短的那串是编码过的,长的那串是没有编码的)。你随便挑选其中一个网址,加入浏览器的书签,就 OK 了。下次只要点击这个书签,打开 Startpage 界面后,Startpage 就可以根据网址中的参数,知道你的个性化设置。

◇用 URL 网址来保存个性化设置的【好处】


  用 URL 网址来保存个性化设置,可以不依赖 cookie。这样有啥好处捏?
  其一,
  有些关注隐私的网民,会定期清除浏览器所有的 cookie。用 URL 参数来保存个性化设置,清除 cookie 时就不会受影响。
  其二,
  很多关注隐私的网民,会用【隐私模式】来访问 Startpage 网站。在"隐私模式"下,cookie 只保存于【内存】中,也就无法记住用户的设置;而用 URL 参数来保存个性化设置,就可以完美兼容【隐私模式】。


★如何【更安全地】使用 Startpage?


  虽然 Startpage 公开声称:绝不会偷窥用户的隐私。但以俺的行事风格,从来【不会】轻易相信任何口头声明。(在信息安全的圈子混了这么多年,这是起码的素质)
  有鉴于此,俺在使用 Startpage 的过程中,依然对它进行了一些防范。俺要达到的效果是:即便 Startpage 想要耍流氓,暗中收集俺的信息,也收集不到太多。下面是俺采取的几个措施:

◇只通过【Tor 代理】访问 Startpage


  虽然 Startpage 声称不会记录用户信息(用户信息当然也包括"公网 IP")。但它到底有没有偷偷记录用户的公网 IP,外界是无法判断滴。
  为了保险起见,俺总是通过 Tor 代理访问 Startpage。这样一来,就算 Startpage 偷偷记录"访问者 IP",俺也无所谓。因为在 Tor 代理的模式下,Startpage 服务器看到的"访问者 IP",其实是 Tor 网络的"出口节点"的 IP,而【不是】俺本人的公网 IP。
  引申阅读:
"如何翻墙"系列:扫盲 Tor Browser 7.5——关于 meek 插件的配置、优化、原理
"如何翻墙"系列:关于 Tor 的常见问题解答

◇只在【隐私模式】下访问 Startpage


  在 Firefox 的隐私模式(private windows)下,即便某个网站企图保存 cookie,这些 cookie 也只保存在会话(session)中,也就是【内存】中。当你关闭隐私浏览窗口,这些 session 中的 cookie 就消失了。
  虽然 Startpage 默认【不】使用 cookie,但就算 Startpage 有一天变坏了,想要偷偷使用 cookie,俺也不怕。

◇只在【禁用 JS】的情况下访问 Startpage


  这么干,主要是防止网站收集【浏览器指纹】。啥是"浏览器指纹"捏?可以参见俺的《如何保护隐私》系列教程的第5篇(链接在"这里")。
  网站要想获取"浏览器指纹",常用的两种方式是:
1. 通过浏览器的"User Agent"
2. 通过收集浏览器运行环境的信息(大部分需要通过 JS 脚本实现)
  对前者的防范,可以参见《如何保护隐私》系列的第6篇(链接在"这里")。对于后者,只要你禁用了 JS 脚本,很多收集浏览器指纹的技术就会失效,因此可以大大降低"浏览器指纹"的【信息量】。(注:信息量越低,"浏览器指纹"的【唯一性】就越差,也就越难以用来定位某个具体用户)
  由于 Startpage 在禁用 JS 脚本的情况下也可以正常使用,所以俺总是对 Startpage 网站禁用 JS 脚本。


★为啥俺【不】推荐 DuckDuckGo(DDG)?


  本文发布后,估计某些读者会让俺推荐 DuckDuckGo(简称 DDG)。所以先把丑话说在前头——谈谈"为啥不推荐 DuckDuckGo"?

◇搜索质量太差(相比 Startpage 而言)


  最重要的一个原因是:DuckDuckGo 的搜索质量实在不行。这可不是俺一家之言,网上有很多人抱怨过这点。(如果你不信的话,可以自己测试一下)
  如果搜索质量不 OK,就算隐私保护做得再好,对俺来说也没有意义了。

◇DuckDuckGo 隶属于【美国】公司


  每一家公司都不可避免地要受到所在国法律的影响。DDG 隶属于美国公司,而 Startpage 隶属于荷兰公司。
  由于《美国爱国者法案》(洋文叫做"USA PATRIOT Act")的存在,注册在【美国】的 IT 公司,将会有隐私方面的风险——美国政府(在反恐的名义下)可以要求美国公司交出用户数据。关于该法案的详细介绍,可以参见维基百科的"这个链接"。
  说到"美国政府对互联网的监视",咱们要再次感谢斯诺登同学冒着生命危险进行爆料。关于这事儿,俺专门发过2篇博文:
中美政府信息监控的差异——"棱镜门"丑闻随想
每周转载:关于"棱镜门"丑闻的相关报道
  在法律方面,欧盟对隐私的保护,要明显好于美国;而荷兰又是欧盟国家中,这方面做得比较好的。
  综上所述,从"公司所在国的法律"来评估隐私风险,Startpage 要优于 DuckDuckGo。

◇DuckDuckGo 的基础设施依赖于亚马逊的 AWS


  DDG 网站的运作依赖于亚马逊的 AWS 云平台(具体参见"DDG 创始人 Gabriel Weinberg 的访谈")。
  由于亚马逊也是美国公司,同样存在前面提及的《爱国者法案》的隐私风险。

◇关于"DuckDuckGo VS Startpage"的引申阅读


  下面这篇文章【很全面地】对比了这两款注重隐私保护的搜索引擎。此文写于2016年,更新于2017年,还算是比较新的。
  之所以说这篇【很全面】是因为:此文不光对比了这两个搜索引擎的界面和功能,还涉及到其它很多细节——比如"HTTP 协议的 referer 字段",比如"服务器所在地",比如"公司的合作伙伴",比如"公司的资方背景"......
DuckDuckGo or Startpage