zmirror
zmirror copied to clipboard
Google镜像无法“关闭安全搜索”
首先感谢,zmirror很棒 我在使用终于到一个问题自己搭建的g镜像和demo上的测试都是无法关闭安全搜索
原因
zmirror自带配置文件的google镜像是 google.com.hk .hk的google是无法关闭安全搜索的, 只有 .com 才能关闭
国别重定向
额至于为什么不用 .com, 是因为google会自动把 .com 重定向到国别域名 (比如.hk) 比如在zmirrordemo服务器上执行
curl https://www.google.com/
的结果是这样的
HTTP/1.1 302 Found
Alt-Svc: quic=":443"; ma=2592000; v="36,35,34,33,32"
Cache-Control: private
Content-Length: 390
Content-Type: text/html; charset=UTF-8
Date: Fri, 23 Sep 2016 13:55:48 GMT
Location: http://www.google.com.hk/url?sa=p&hl=zh-CN&pref=hkredirect&pval=yes&q=http://www.google.com.hk/%3Fgws_rd%3Dcr&ust=1474638978173214&usg=AFQjCNFHjPbNxC5AWu-fQ9efDvgtGlZmIw
P3P: CP="This is not a P3P policy! See https://www.google.com/support/accounts/answer/151657?hl=en for more info."
Server: gws
Set-Cookie: NID=87=ORo4OiqcVGhMKFN9jhxYApfpVmAvcsXK4CuaR6nSetrjiDM2WDIt663Ed5SVNpTdZ01JD5blDOpY1sVlTjDgpdV2W2A1LGjGso2Jz7V8mIiaAYFMN2q1jHM5KA8m2NI1; expires=Sat, 25-Mar-2017 13:55:48 GMT; path=/; domain=.google.com; HttpOnly
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.com.hk/url?sa=p&hl=zh-CN&pref=hkredirect&pval=yes&q=http://www.google.com.hk/%3Fgws_rd%3Dcr&ust=1474638978173214&usg=AFQjCNFHjPbNxC5AWu-fQ9efDvgtGlZmIw">here</A>.
</BODY></HTML>
请求被重定向到了 www.google.com.hk
避免国别重定向
对于如何避免国别重定向, 目前已知的方法只有用户主动访问 https://www.google.com/ncr 在访问这个url后, 会给用户设置一个(类似乱码的)cookie, 在里面记录了_不进行国别重定向_的标志, 而具体是怎么样, 我无法知道. 所以也无法由zmirror模拟在cookie中设置这个_不进行国别重定向_的标志
而由浏览器主动请求 https://www.google.com/ncr 至少目前我想不出合理的方案 :disappointed:
未来可能的解决方法
最理想的话, 就是能让zmirror在cookie中模拟出_不进行国别重定向_的标志, 但是希望渺茫
另一种比较现实的方法, 是zmirror设置一个自己的ncr标记, 对于所有没有该标记的请求, 全部307重定向到 /ncr 相当于强制所有访问者都必须访问一次 /ncr 这种方法虽然可行, 但是会让google镜像的配置文件变得相当复杂, zmirror源码也需要一些修改
不过由于 google.com 的用户体验比 .com.hk要好一截(比如界面), 还是会考虑加上这些修改的, 到时候google可能会分成两个配置文件, 一个简单的 .com.hk, 一个复杂的 .com
欢迎提供避免国别重定向的方法
RT :smile:
将会在近期版本加入强制 /ncr 的机制, 非常感谢
新用户重定向 /ncr 的功能已经实现了(尚未commit) 但是存在一个问题:
当浏览器(Chrome 52)访问 www.google.com 时, 显示的是中文(正常), 如下图
但是在访问了 /ncr 之后, 界面变成了英语
(在真实google中的结果, 镜像后的google表现相同)
不知道原因.
也就是说, 现在虽然可以通过 /ncr 重定向来做到让用户留在google.com (从而达到关闭"安全搜索"的目的) 代价是google界面变成英文
不知道有没有能在 /ncr 之后让google保留中文界面的方法
发现在 /ncr 后, 可以通过在query string中手动添加 hl=zh-CN 来主动使用中文界面
比如 https://www.google.com/webhp?hl=zh-CN
刚添加的配置文件中, 通过主动给url添加 hl=zh-CN 来使访问者查看到的是中文界面
配置文件还有待测试.
如果想要从旧的google.com.hk升级到新的google.com配置文件:
- 复制
more_configs/experimental__config_google.py到 zmirror 根目录(wsgi.py所在目录), 并重命名为 config.py 覆盖掉之前的 - 复制
more_configs/experimental__custom_func_google.py到zmirror根目录, 并重命名为 custom_func.py - 修改
config.py中的my_host_name选项的值为你自己的域名 - 执行
git pull来更新zmirror程序本身(不要忘记) - 重启apache
使用新google配置文件的demo: https://dev.zmirrordemo.com/ (issues关闭后会撤掉)
目前仍然会出现 /ncr 失效的问题
@zjuchenyuan 同学发现, 在 .com.hk下, 只要把语言设置成英语或者中文繁体, 就能关闭 safe search 可以作为一种不错的方案
.com的国别重定向好麻烦........QAQ