作者albb0920 (QQ)
看板Free_box
标题Re: [问题] 百度云的wap网页版失效了?! (修)
时间Sat Nov 7 01:00:25 2015
Chrome 目前无法用 userscript 实作,原因下述。
总之包了一个 Chrome 扩充套件,有需要可以抓下来後拖进 chrome://extensions 安装
https://drive.google.com/file/d/0B2ReFSiH3v7FQUN1aUo3UzZWOHc/
下面解释为什麽在 chrome 用 userscript 做不出来,有兴趣可以听我 murmur
Chrome 的扩充套件其实可以看成 userscript 的加强版,
对浏览器控制的自由度不是能跟 Firefox 比的
所以 greasemonkey 能做的事,tempermonkey 不一定能做
前面有人讲了,百度判定 PC 的 js 是 id="platform" 这支 script,
如果我们要绕过去,有两个方法
1. 阻止这个 script 被执行
2. 在执行前先改掉 navigator.platform,骗过这个 script
第一个方法在 firefox 可以用 onbeforescriptexecute 这个事件处理,几行就做完了
Chrome 没有这个事件,没有可以替代的事件,结案
第二个方法:
这个需要插入的 code 比判定程式更早跑,
麻烦的是判定程式是 inline JS,排在他前面的也都是 inline JS,
在跑到他时完全不用等外部资源载入
而浏览器并不保证由 js 动态加入的 script tag 几时会执行
Tempermonkey 的 @run-at document-start 并不是真正的 document-start
实际测试,跑到你的时候页面已经有很多部分载入进来,那个 inline 的 JS 也跑完了
这个原因在,虽然 tempermonkey 对页面而言是在 document-start 跑
他要执行 script 的时候,会用非同步的方式跟背景抓,这时就可能被其他 script 超前
参考:
https://github.com/derjanb/tampermonkey/issues/211
以上是为何 Tempermonkey 不能做到这件事的理由
我在写 chrome 外挂,弄了老半天弄不出来
结果我必须要插 inline JS 才有办法比百度的 code 早跑,
写 src = chrome.extension.getURL() 就是比检查程式慢
照理说 document-start 的时候,整个 DOM Tree 是空的,他应该要先跑我才对
但好像他会因为我是用 js 插入的 script tag,不写成 inline 就是不行
※ 引述《bestpika (飞影‧忌子)》之铭言:
: 老实说那不是正规的解决办法
: 正确的做法应该是使用 UserScript 来做
: 去看原始码会看到有一段是这样开头的
: <script id="platform"... 然後里面有个 isPC=false
: 好,这里就是关键
: 我们要想办法让这个 isPC 保持在 false
: 所以我们可以直接去用这个
: https://greasyfork.org/zh-TW/scripts/13434
: (那你前面讲那串是讲心酸的喔)
: 就这样 XD
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.32.109.58
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Free_box/M.1446829229.A.88B.html
1F:推 popbitch: 今天发现Javascript Switcher失效,改用这个可以 11/07 07:22
2F:→ wahimodeux: switcher不行,用之前m大那篇介绍的ublock还是有效 11/07 09:03
3F:推 g5637128: 感谢~ 11/07 12:49
4F:→ bestpika: 你讲的这个我贴的那个的作者已经讲过啦 XD 11/07 20:14
5F:→ bestpika: 还有严格来说不是tempermonkey能不能做,而是那个作者要 11/07 20:18
6F:→ bestpika: 不要改成可以那样的方式,毕竟你写的东西都可以达成了 11/07 20:18
他没办法用我的方式,因为他不能改自己的 manifest
我稍微看了一下,要让 tempermonkey 解决 timing 问题应该满麻烦的
至少我不会想花时间研究送 patch XD
7F:推 wahimodeux: ublock的方式好像也失效了,这篇可以,谢谢 11/08 01:54
8F:→ wahimodeux: 咦,好像又可以,不必多装上面的套件,抱歉我太冲动了 11/08 01:58
9F:→ wahimodeux: 今晚百度怪怪的 11/08 01:58
10F:推 dain223: 我刚用Javascript Switcher,还是有成功耶 11/08 04:06
11F:→ wahimodeux: 不知道耶,我今晚用百度都怪怪,不好意思哦 11/08 04:09
12F:→ bestpika: 还有你的套件只要没有丢上 chrome web store 就会天天都 11/08 21:34
13F:→ bestpika: 被 chrome 强制关掉XD 11/08 21:34
嗯,我忘记 Google 改政策了
解法: 改附档名成 zip 解压缩,在 chrome://extensions 打开开发者模式
然後 "载入未封装扩充功能" 选择解压缩的资料夹。
我不想为了这个付五块美金给 Google,所以只能这样罗XD
不愧是新时代的 IE,越来越觉得我需要认真把自己转移到 Firefox 去了zz
※ 编辑: albb0920 (114.32.109.58), 11/09/2015 03:21:13