文章关键字 ‘Chrome’

Chrome使用socks5代理

2009年12月15日,星期二

Chrome使用socks5代理,这个可以用来干嘛就不需要我教了吧。。。

chrome.exe --proxy-server=socks5://127.0.0.1:8008

这里看到的

有没有人告诉我哪款浏览器内置支持httpS SSL代理啊?Twitter各位大神,你们RT了这么多次了帮我RT这下这个问题吧。。。

Chrome泄漏代理上网真实IP地址 - 这个就瞎JB扯蛋

2009年12月15日,星期二

cnbeta上一篇新闻 OOXX者注目:Chrome浏览器新Bug可泄漏代理服务器用户的真实IP地址

原文是theregister,这种journalism报道技术新闻闹笑话也不是第一次了。还好我订了Full-disclosure,一搜,就是这个bug

说的简单点,就相当于Firefox里的 network.proxy.socks_remote_dns 没有设置为true罢了。

这个攻击很老掉牙。但是吹嘘得那么严重就纯扯蛋了。

Chromium 4.0.259.0 (r33218) 字体渲染太丑解决办法

2009年11月27日,星期五

最新版Chromium 4.0.259.0 (r3321 8) 字体渲染太丑

原因是某个脑残Google程序员把默认中文字体改成黑体了。

解决办法:

打开自己的profile所在目录,用记事本打开 Default\Preferences

最后几行,改成:

   "webkit": {
      "webprefs": {
         "default_fixed_font_size": 13,
         "default_font_size": 16,
         "developer_extras_enabled": true,
         "fixed_font_family": "NSimSun",
         "inspector_settings": "resourceTrackingEnabled:boolean:true\nlastActivePanel:string:elements\n",
         "sansserif_font_family": "SimSun",
         "serif_font_family": "SimSun"
      }
   }

就跟老版一样了。

升级这个版本是为了官方extensions和Bookmark Sync。这两个功能在垬朝都被封了。真杯具。

ps 那个Chrome Hotkey Patch对最新版果然有问题,估计修正不了了。。。。

GReader里图片较多的RSS按j跳过之后进度条会跳动很烦

2009年11月17日,星期二

在Google Reader里经常遇到网友分享的图片很多的帖子,例如u148和掘图志。这个时候如果想按 j 跳过就麻烦了,因为图片没加载完,看下一篇帖子的时候滚动条老跳动。

这个问题其实我很早就解决过,IE下,按Esc这个键,可以停止所有页面的图片加载(同时提示下IE里按Esc可以停止GIF动画播放和停止背景音乐),不刷图片了,页面自然就不会跳动了。

但是这个问题在Chrome下又出来了,Chrome下Esc也会停止页面加载,但是可能因为Google Reader采用了frame或者iframe之类的框架页,Esc似乎对框架页不起作用,这个算webkit的bug吧?

现在修正这个bug的机会来了,我已经向Chromium提交了这个issue,有Gmail帐号的同学们一定帮忙去顶啊,或者转帖这篇博文,让大家都来顶,让Google看到,让新版本改进这个bug

地址是:

http://code.google.com/p/chromium/issues/detail?id=19134

英文好的同学可以长篇大论软硬皆施,英文不好的同学在最下面的comment里输入一个 +1 顶贴好了。感谢各位支持咯。

更新: Google官方已经列为milestone-5的目标了,大家不用去++++++n了。当然有建设性的意见还是可以继续提出。官方已经抱怨spam了,大家就绕了chromium开发者了吧。。。。

chrome浏览器一个老漏洞chromeHTML://

2009年10月19日,星期一

http://www.milw0rm.com/exploits/7566

http://code.google.com/p/chromium/issues/detail?id=9860

这个chromeHTML://比Chrome Frame有意思多了

Google Chrome Frame

2009年09月23日,星期三

Ahhhhh, fuck. Google推出了Chrome Frame

其实就是一个特殊版本的Chrome,里面包含了一个npchrome_tab.dll

注册了一个CF:这样的Asynchronous Pluggable Protocols到IE,然后嵌入一个ActiveX的Chrome引擎代替IE来layout和javascript。目前还没有去测试cookie啊XSS啊XSRF特性,不过:

cf:javascript:alert(/fuck chrome/)

这个似乎没用。

注意看上面的截图,地址栏里显示的是cf:http://g.cn。说明什么?说明我们很方便地址栏钓鱼了。因为301/302跳转显示没变。

目前还发现一个问题就是cf:https://gmail.com 似乎没用。但是测试了下其他https网站似乎可用。

Google官方给出了一个CFInstall.js来探测Chrome Frame是否可用。

大概就是var obj = new ActiveXObject('ChromeTab.ChromeFrame'); 这一句了。

npchrome_tab.dll定义了几个导出函数:

CfLaunchChrome
NP_GetEntryPoints
NP_Initialize
NP_Shutdown
RegisterNPAPIPlugin
UnregisterNPAPIPlugin

测试了下 rundll32 npchrome_tab.dll, CfLaunchChrome 可以启动 Chrome。不过把NPAPI引入IE会导致n多安全问题吧?

下面贴一个npchrome_tab.dll里的typelib:

ChromeTabLib; // ChromeTab 1.0 Type Library

Dispatch DIChromeFrameEvents;
GUID={A96B8A02-DD11-4936-8C0F-B2520289FABB};
function onload;
function onloaderror;
function onmessage(event:IDispatch);
function onreadystatechanged;
function onprivatemessage(event:IDispatch; target:BSTR);

Class HtmlFilter;
GUID={BB1176EE-20DD-41DC-9D1E-AC1335C7BBB0};
function QueryInterface(riid:^GUID; out ppvObj:^^void): HResult;
function AddRef: UI4;
function Release: UI4;

Class ChromeProtocol;
GUID={9875BFAF-B04D-445E-8A69-BE36838CDE3E};
function QueryInterface(riid:^GUID; out ppvObj:^^void): HResult;
function AddRef: UI4;
function Release: UI4;

Class ChromeActiveDocument;
GUID={3E1D0E7F-F5E3-44CC-AA6A-C0A637619AB8};
function QueryInterface(riid:^GUID; out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
property-get src: BSTR;
property-put src(BSTR);
function postMessage(message:BSTR; [target:variant]);
property-get onload: variant;
property-put onload(variant);
property-get onloaderror: variant;
property-put onloaderror(variant);
property-get onmessage: variant;
property-put onmessage(variant);
property-get readyState: I4;
function addEventListener(event_type:BSTR; listener:IDispatch; [use_capture:variant]);
function removeEventListener(event_type:BSTR; listener:IDispatch; [use_capture:variant]);
property-get version: BSTR;
function postPrivateMessage(message:BSTR; origin:BSTR; target:BSTR);
property-get useChromeNetwork: bool;
property-put useChromeNetwork(bool);

Dispatch IChromeFrame; // IChromeFrame Interface
GUID={B9F5EA20-C450-4F46-B70F-BFD3CA9A20C5};
function QueryInterface(riid:^GUID; out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
property-get src: BSTR;
property-put src(BSTR);
function postMessage(message:BSTR; [target:variant]);
property-get onload: variant;
property-put onload(variant);
property-get onloaderror: variant;
property-put onloaderror(variant);
property-get onmessage: variant;
property-put onmessage(variant);
property-get readyState: I4;
function addEventListener(event_type:BSTR; listener:IDispatch; [use_capture:variant]);
function removeEventListener(event_type:BSTR; listener:IDispatch; [use_capture:variant]);
property-get version: BSTR;
function postPrivateMessage(message:BSTR; origin:BSTR; target:BSTR);
property-get useChromeNetwork: bool;
property-put useChromeNetwork(bool);

Class ChromeFrame;
GUID={E0A900DF-9611-4446-86BD-4B1D47E7DB2A};
function QueryInterface(riid:^GUID; out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
property-get src: BSTR;
property-put src(BSTR);
function postMessage(message:BSTR; [target:variant]);
property-get onload: variant;
property-put onload(variant);
property-get onloaderror: variant;
property-put onloaderror(variant);
property-get onmessage: variant;
property-put onmessage(variant);
property-get readyState: I4;
function addEventListener(event_type:BSTR; listener:IDispatch; [use_capture:variant]);
function removeEventListener(event_type:BSTR; listener:IDispatch; [use_capture:variant]);
property-get version: BSTR;
function postPrivateMessage(message:BSTR; origin:BSTR; target:BSTR);
property-get useChromeNetwork: bool;
property-put useChromeNetwork(bool);
function onload;
function onloaderror;
function onmessage(event:IDispatch);
function onreadystatechanged;
function onprivatemessage(event:IDispatch; target:BSTR);

Class ChromeFrameBHO;
GUID={ECB3C477-1A0A-44BD-BB57-78F9EFE34FA7};
function QueryInterface(riid:^GUID; out ppvObj:^^void): HResult;
function AddRef: UI4;
function Release: UI4;

问了下#chromium里的人,他们说源码还没公开。看得出来CF只是为了借Wave推广Chrome的一个小聪明。总体感觉Chrome Frame,想做到很安全,难。还是regsvr32 /u npchrome_tab.dll,早点卸了吧。

2个tip:Chrome的omnibar和中文wikipedia

2009年08月22日,星期六

以前从chrome地址栏复制东西有一个不方便就是中文,例如

http://zh.wikipedia.org/wiki/%E4%B8%AD%E5%9B%BD

在omnibar显示的时候是直接显示中文的

http://zh.wikipedia.org/wiki/中国

复制粘贴这种URL到其他浏览器要出问题,因为很多浏览器对包含非ASCII字符的URL处理有问题,新版本(4.0.201.1, r 23222)现在正常了。只要是地址全部复制就会自动转换成%E4%B8%AD%E5%9B%BD这种通用UTF-8 encode形式

============================================================

中文wikipedia的url一般很长,例如

http://zh.wikipedia.org/w/index.php?title=Wikipedia:每日图片/2009年8月20日&variant=zh-hans

这个URL最大的毛病就是robots.txt不允许抓取 /w/ 页面,所以有些页面只能抓繁体页面,很不爽。

现在也改好了:

http://zh.wikipedia.org/zh-hans/Wikipedia:每日图片/2009年8月20日

URL比以前的简洁有效多了。

谷歌浏览器快捷键通用补丁发布 Chrome Hotkey Patch

2009年08月19日,星期三

谷歌浏览器快捷键通用补丁 Chrome Hotkey Patch

适用于任意版本的Chrome、Chromium,不出意外也应该直接兼容将来版本的Chrome、Chromium

补丁功能:

增加以下快捷键:

F1 撤销关闭标签
F2 上一个标签
F3 下一个标签
F4 关闭当前标签

Chrome帮助请按Ctrl+F1,页面文字查找请按Ctrl+F

补丁使用方法:

对 chrome.dll 打补丁即可。

点击 Browse 浏览 chrome.dll 所在位置,点击 Patch 打补丁。

会在 chrome.dll 同一目录生成一个备份 chrome.dll.bak

补丁下载

exe单文件直接下载:(731 KB)
http://zxn0.googlecode.com/svn/chrome_hotkey_patch/chrome_hotkey_patch.exe

  File: chrome_hotkey_patch.exe
  Size: 748750
CRC-32: d2ce16ce
   MD4: 8574d4f38e0ada2716bb9db6ed556f12
   MD5: 82f251535f1b0bb2b3c9821a743ac493
 SHA-1: 4a5bf2d7289520d386933fd5a00d5701d7ecf958

同时提供RAR打包源码(AutoIt3)下载

Chrome, Chomium, dev channel和谷歌浏览器书签同步

2009年08月18日,星期二

听说Chrome 4.0.201.1 r23222支持同步Bookmark了,立即升级了我的Chromium。发现最新的Chromium 4.0.202.0 (23612) 使用了 --enable-sync 居然点击 Sync my bookmarks没有反映,于是检查了下log发现

[2484:3988:20557765:ERROR:syncapi_stub.cc(222)] NOT IMPLEMENTED

去官方问了下,官方回答说只有Google Chrome才提供书签同步,原因是书签同步使用了一些Google内部私有代码(syncapi.dll),Chromium是支撑Chrome的背后开源项目,而Chrome才是谷歌的产品:谷歌浏览器。于是只有去屁颠屁癫老老实实下载Chrome Dev channel:

http://chromium.googlecode.com/files/chromechannel-2.0.exe

我一向讨厌bootstrapper,所以抓包出来直接可以迅雷的地址了:

http://cache.pack.google.com/edgedl/chrome/install/201.1/chrome_installer.exe

用7zip两次解压chrome_installer.exe得到一堆程序,然后覆盖原来的Chromium,就可以用谷歌浏览器4.0.201.1 r23222 了

如果是谷歌浏览器正式版用户,可以直接下载Channel切换工具,切换到Dev版本来使用书签同步功能。

另外我发现Google Update会自动下载
http://dl.google.com/o3d/extras/0.1.1.0/o3dextras.msi
不知道是不是我已经安装了O3D的原因。Google Update要占用内存,还是禁用了好。打开
"%appdata%\..\Local Settings\Application Data\Google"
把update文件夹重命名为update1然后新建一个0字节的空文件名字叫update,设置为只读即可。

用了下Chrome,居然拼写检查功能也回来了。发现拼写检查的词典也是在线下载的:
http://cache.pack.google.com/edgedl/chrome/dict/en-us-1-2.bdic (跳转到http://dl.google.com/chrome/dict/en-us-1-2.bdic)

http://cache.pack.google.com/edgedl/chrome/dict/de-de-1-2.bdic

http://cache.pack.google.com/edgedl/chrome/dict/en-gb-1-1.bdic

今天算是把Google Chrome和Chromium关系搞清楚了。除了书签、词典两者有区别之外,Chromium的地址栏建议是可以定制为第三方的,而谷歌浏览器默认当然就是Google了;谷歌浏览器会向Google发送使用统计信息,当然你可以在选项里把这个功能关掉,Chromium根本没有这个功能,因为连rlz.dll这个文件都不存在;谷歌浏览器可以使用Google的各种服务,Chromium只能使用Google的各种公益服务,例如网络欺诈查询之类的;谷歌浏览器是通过Google Update安装的,Chromium是自己解压,虽然我也是绕过Google Update自己解压的。

书签同步很好用,在Google Docs里也可以看到,推荐~~~不知道Google Docs API支持书签操作不。

话说Google Docs几乎就是GDrive了吧?都有文件夹、快捷方式这些东西了。

谷歌浏览器的书签同步功能是通过XMPP协议实现的,那么也就是说稍微hack一下就可以在谷歌浏览器里实现Gmail邮件提醒和GTalk功能了。哈。反正已经有一个登录的XMPP,需要浏览器来维持session了。

Chrome的隐身模式(incognito mode)也不是完全隐身的

2009年08月18日,星期二
  1. 打开这个链接,随便输入一个东西,点击remember me
  2. 在隐身窗口打开上面那个链接,看看是不是把你输入的东西显示出来了?
  3. 这个技术也被很多次提到了,是Flash的cookie,叫Local Shared Object

我目前的Chrome启动批处理是:

@echo off
rd /s /q B:\Cache
rd /s /q "%APPDATA%\Macromedia\Flash Player\#SharedObjects"
start "" cmd /cpython E:\302_jump_30462.py
start "" chrome.exe "--proxy-pac-url=http://fuck.gfw/gfwtf.pac" --allow-all-activex "--user-data-dir=%~dp0User Data-est" --enable-udd-profiles --enable-user-scripts --disable-java --disk-cache-dir=B: --disk-cache-size=41943040 %*

提交了一个issue看看chromium会不会把Plugin也sandbox了