liang860908 / snova

Automatically exported from code.google.com/p/snova
0 stars 0 forks source link

PreferHosts对HTTP协议无效 #458

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
不好意思又来麻烦作者了。

HTTP直连Host,为何有这样奇怪的需求?
因为google墙内的IP 203.xxx完全可以用直连方式连接而不触墙
比如http://www.google.com.hk可以搜索“胡萝卜”,wenda.google.com.hk�
��以正常访问等
当然Gsnova的GoogleHttp方式也是连北京IP,不过貌似不是直连,��
�为会有一些小问题:最明显的,GoogleHttp方式访问www.google.com.
hk,css显示不正常(com.tw,co.jp,co.kr等此时却正常,不知何��
�),wenda.google.com.hk页面会红字提示“你的浏览器不被支持,
可能显示不正常”(ua不被识别?)

我做了如下设置,试图解决这个问题:
1、[Hosts]下
Enable=2 (启用对所有协议的hosts)
2、spac里添加
  {
    "Protocol" : "http",  
    "Host" : ["*.google.com.hk"],
    "Proxy": ["Direct"],
    "Attr":  ["PreferHosts"]
  }, 
3、user_hosts或者cloud_hosts里添加
*.google.com.hk=203.xxxx
而且smarthosts本身就包含这个对应的解析
不过最后gsnova还是触墙了……

附加条件:
如果系统hosts内有对应解析,gsnova不会触墙,不过有明显滞后
,应该是查询dns无果后尝试本地查询
禁用系统dns,gsnova也不会触墙,同样滞后

HTTPS表现正常,对于有PreferHosts属性的地址gsnova会首先从hosts��
�找。

另外尚有一小小疑问:即便设置[Hosts]下Enable=0,有PreferHosts属
性的HTTPS地址仍然会读取本地hosts,那此处Enable参数意义为何�
��

Original issue reported on code.google.com by binkto...@gmail.com on 20 Jul 2013 at 10:47

GoogleCodeExporter commented 9 years ago
Google的规则在cloud_spac.json里默认有,是不是和自定义的冲突��
�?

Original comment by yinqiwen@gmail.com on 23 Jul 2013 at 12:37

GoogleCodeExporter commented 9 years ago
应该不是冲突的关系,我测试以后感觉好像就是PreferHosts对HTT
P协议没有生效,gsnova还是会优先去查询dns,当然任何dns都不�
��给出google北京的ip,于是就出触墙了。PreferHosts对HTTPS是生效
的。感觉是故意忽略HTTP?

我的user_pre_spac.json跟google有关的如下:
  {
    "URL" : ["www.google.*/imgres", "www.google.*/images", "www.google.*/alerts", "www.google.*/custom", "earth.google.com", "maps.google.com", "ditu.google.com", "map.google.com", "kh(*)?.google.com", "cbk*.google.com", "mw*.google.com", "mt(*)?.google.com", "feedproxy.google.com"],
    "Proxy":["Direct"]
  },
  {
    "Host" : ["play.google.com", "books.google.com"],
    "Proxy":["C4"]
  },
  {
    "Protocol" : "http",
    "Host" : ["*.google.com", "*.google.com.hk", "*.youtube.com"],
    "Proxy": ["Direct"],
    "Attr":  ["PreferHosts"]
  },  
  {
    "Host" : ["*.youtube.com", "youtu.be", "youtube-nocookie.com", "*.ytimg.com*", "*.google.com(.*)?", "*.googleusercontent.com*", "*.gstatic.com", "*.googlecode.com", "*.doubleclick.net*", "*.google-analytics.com", "*.blogger.com", "*.google.co.*", "goo.gl", "android.com", "*.blogspot.*", "*.appspot.com", "golang.org", "panoramio.com"],
    "Proxy":["GoogleHttps", "Direct"]
  },

Original comment by binkto...@gmail.com on 24 Jul 2013 at 4:27

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
默认规则对google的http站点会有些问题,举例如下:
1、chrome里打开 http://www.google.com, 页面加载不完全
打开http://www.google.com.hk是正常的。
原因可能是www.google.com本来会自动跳转.hk,被gsnova接管后没跳
转成功,结果部分内容无法加载。
2、chrome打开http://wenda.google.com.hk和http://productforums.google.com,�
��面均提示不正常。

如果是设置系统hosts为北京ip,然后直连则一切正常
但是gsnova的preferhosts属性貌似只对https生效,http则首先查询本
地dns(不懂代码,这是我测试的结果)

另外有一个非常annoying的问题——关于facebook的iOS客户端。
测试过程如下:
1、facebook的安卓和iOS客户端顺利加载需要连接这两个域名:ap
i.facebook.com,graph.facebook.com,准备好可用的IP(可ping且443通)
,并写入ios的etc/hosts,不开启gsnova,iOS客户端顺利加载最新��
�态
2、安卓设置代理为pc上的gsnova,开启facebook客户端,顺利加载
最新动态
3、清理iOS的etc/hosts,删除所有facebook相关ip,
怪事出现了,iOS的facebook客户端无法加载最新动态,无限菊花
不管是
a) 用iOS或pc的gsnova做代理
b) 
默认规则还是direct直连抑或是direct直连+preferhosts(就是刚才��
�试可用的hosts)
c) 甚至是用C4做facebook的代理
统统无限菊花,最后提示网络错误
把facebook的ip加回iOS的etc/hosts,再用gsnova代理则正常。
这算不算一个bug,按理设置direct+preferhosts应该等价于直接设��
�系统hosts。

Original comment by binkto...@gmail.com on 26 Jul 2013 at 11:32

Attachments: