返回列表 发帖
本帖最后由 qiwei_201 于 2013-11-22 15:39 编辑

写在前面的建议:
       看了论坛里的一些各种建议,有的希望继续精简,有的希望增加部分功能,我想说的是开发人员应该比用户更加清楚增加(减少)某一功能而带来的性能上降低(增高),如果某一其它浏览器的功能不影响或影响极小内核的性能,那就加上,反之就不加或去掉。

        已经好多年了没有用过TW了,平时主要是用Firefox,Chrome内存占用不是一般的多,尤其是开多个网页,在功能上和同等性能资源战胜上取得平衡最好的还是Firefox,最近无意中发现TW6版,就试了一下,资源占用和性能不是一般得满意,真希望TW6不要像其它浏览器变得越来越臃肿了。

       其实软件定位很重要,要说功能上或可扩展性最强应该非Firefox莫属,资源占用最小的应该是Opera(当然是指原有核心的版本),而性能加功能Chrome类就行(其实本人一点也没觉得Firefox在性能上输过Chrome)。关于使用Chromium核心的第三方浏览器中,在功能上最符合中国特色应属Maxthon,其它的各种壳都大同小异,没有多大特色,搜狗的在教育网环境中有一些优势。所以说希望TW6要想有特色,就不可能迎合所有人的习惯,用户完全可以用多个浏览器搭配上使用,把资源占用底速度快的TW6做为主力,有特殊需求的时候开其它浏览器。

      本人比较需要或希望有的功能:
      1、自定义下载,最好可以自己添加或修改调用软件的命令行参数,如果有了这个其它的预置可有可无,为了照顾对电脑不熟悉的用户,可以预置一些常见下载工具调用。添加这个功能不会对核心的性能产生任何影响,并且需要添加的代码也不大,只是看开发人员原不愿意。
      2、开发人员工具,有了这个至少可以看看控制台错误、即时修改一下页面、监视一下那个网络请求比较慢等,其实Chrome的开发人员工具做的很好,一点也不比Firefox+Firebug差。但是有可能因为TW的核心太精简了,很多API去掉了,已经不方便添加这个工具了,如果真是加这个工具而对核心影响很大,那这个建议就算了。
      3、提供重载代理的开关,本人用的是命令行参数加载的代理设置--proxy-pac-url,如果对代理列表做了修改,需要重启浏览器才能生效。Chrome里可以用chrome://net-internals/#proxy中的Re-apply settings的功能,可惜TW把这些精简了,这也需要开发人员衡量得失。

今天有点时间,再接着写一点,下星期陪家人去医院呀,更没时间了。

先说一下主要思路,完了再细说:
我们知道Userscript其实就是让脚本文件在符合条件的网页中运行,也就是把脚本内容注入到当前页面内容中,当然,一般的插件还提供一些脚本管理功能和一些常用的函数。
所以我们就针对把脚本注入到页面中让他运行,至于有的脚本中需要调用插件提供的特有函数,我们就自己再给他提供这些函数(不是所有函数都能实现,有的需要浏览器的API)。

怎么把脚本注入到页面中呢? 也就是再浏览器下载网页的时候动态的修改页面有源代码。记得TW之前的版本支持的广告过滤能修改页面源代码,就是不止能拦截或去掉,更主要是能改写。
这样就能把脚本地址或内容注入到页面中去了,可惜新版TW还没有这个功能,听说将来要加,这个功能比较展望!

既然浏览器不提供修改页面的功能,接下来我就从别的方面想想办法。我们知道访问网页的简单过程是,浏览器先向服务器发出请求------->服务器再把被请求的内容通过源码的形式发回到浏览器----->浏览器**到源码,再渲染、运行、呈现给用户。因为我们比浏览器能早接触到原始源码的过程只有在服务器在返回到浏览器的时候,所以我们可以再服务器到浏览器中间做一些文章,那怎么做了? 我想大家可能想到代理服务器了。设想一下,我们如果是使用代理服务,所有内容都要通过代理服务器做中转,那代理服务器可以对所经过它的所有数据做修改。

我们现在需要做的是怎么在代理服务器上根据一些条件修改不同的网页内容。

先说下使用代理的弊端,不是每个人都有自己的代理服务器,即使有也没必要让所有网络传输都走代理,这样做既浪费资源,又影响网速。所有我们最好要一个能在本机运行的、支持二级代理的、可以自己编写规则的代理软件。在这里我推荐使用Privoxy,Privoxy的介绍可以自行上网搜。Privoxy的功能不是一般的强大,占用资源也比较小。我有很多规则,资源占用也很小,内存10mb左右,CPU小于0.01。她既然可以修改内容,那也就代表可以去广告什么的。值得一提的是她还自带一个功能比较弱的本地web服务。

接下就要详细说一下通过Privoxy给网页注入脚本。

今天先列个大体步骤,等有时间再写。

1、把浏览器的代理指向 Privoxy
2、在Privoxy的配置文件user.filter中添加规则,类似于:
  1. FILTER: baidu_music
  2. s@(?=</html>)@<script src="//userscripts.org/scripts/source/175746.user.js">\n// 百度音乐助手 1.2.3\n</script>\n\
  3. <script src="//userscripts.org/scripts/source/164420.user.js1">\n// BaiduMusicDownloadLinkResolver\n</script>\n@
复制代码


3、Privoxy的配置文件user.action中添加规则,类似于:
  1. { \
  2. +filter{userscript} \
  3. +filter{baidu_music} \
  4. }
  5. music.baidu.com/song/.*
复制代码




这些只是简单的原理,以上规则还不全,不能直接使用,还需要处理跨域问题、Userscript的API等,大家可以先了解一下Privoxy的使用方法,等下一次我接着再写。
还可以配合PAC文件能根据不同浏览器写不同规则,如: 在Firefox中不用注入脚本,在IE中个别网址不启用脚本功能等!




下面是使用Userscript的图:
这个是Feedly.com用了脚本Feedly Colorful Listview的图

Feedly Colorful Listview

ScreenShot_2013-11-07_003005.png
2013-11-7 00:27


这个是给所有网页加上翻译的功能,用了脚本Google Translator Tooltip Expanded

Google Translator Tooltip Expanded

ScreenShot_2013-11-07_003622.png
2013-11-7 00:33


这个是让百度像必应一样,用了脚本 百变饼(修改版)

百变饼(修改版)

ScreenShot_2013-11-22_112912.jpg
2013-11-22 15:26


这个是可以下载百度音乐上的无损格式,用的脚本: 百度音乐助手

百度音乐助手

ScreenShot_2013-11-22_152400.png
2013-11-22 15:21
1

评分人数

  • needed

渲染不错,敢不敢把配置文件上传

TOP

楼主标题党。
IN GOD WE TRUST

TOP

Firefox冷启动是硬伤,当然SSD另论

TOP

就等LZ编辑完成了 别爽约哦

TOP

先马克下。
Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 TheWorld 6

TOP

我也想知道怎么搞,怎么不继续了?

TOP

本帖最后由 sun3596209 于 2013-11-25 19:28 编辑

好吧,等了这么多天就看到一个这样的结果
用楼主的方法可以让其他浏览器,比如IE也用上部分脚本

TOP

LZ用的是哪款翻译软件呀

TOP

这种方法跟 原生的 扩展有点不太一样.. 虽然从性能或者便利性几乎差不多.

  也跟我现在在用第一个叫 proximitron 的软件同出一辙.

不过有些时候.. api 接口什么的. 还是不能达到原生效果.

就拿 读取cookie来说.   chrome 提供了一个chorme.cookies 来读取全部的cookie 包括httponly

但脚本来说无法做到
天下无不散之筵席.

世界之窗浏览器开发计划

TOP

其实TW是支持插件的。
自己建一个plugin文件夹然后放插件进主目录就行了。
脚本看看先,

TOP

回复 10# needed


   你说的确实不错,我本来也就是提出一个临时解决方案,其实原理最重要,很多软件都可以,包括一些其它广告过滤软件(Ad Muncher)、代理软件、自己搭建服务器等!

这种方式确实有一些局限性,不过大部分脚本都可以工作(尤其是那些夸浏览器的脚本),有一些可能需要稍微做一些改动。就连Chrome也没有把所有API实现,要说强大还数原生的Firefox,我说的这种方式只是为了TW的精简和性能,再做一些不影响性能的扩展!

吐嘈一下: 为什么每次编辑完贴子需要审核好长时间,都弄的我不敢编辑帖子了!

TOP

返回列表