steven026 发表于 2022-10-22 11:03:57

本帖最后由 steven026 于 2022-10-22 12:09 编辑




写了个插件,靠chrome debugger protocol模拟真实点击
v2更新:增加一个content页面用来通信获取DOM元素位置【毕生所学……

cxxjackie 发表于 2022-10-22 12:28:27

李恒道 发表于 2022-10-22 01:03
可以利用创建一个空iframe标签然后写innerHtml使script失效,再修改代码重新启动来实现
但是太邪道了....
...

这样相当于重载了一个新的页面,点击后弹出的提示实际是iframe弹出的,原页面还是没变,不过如果用iframe完全替换掉原页面,那可能有点实用价值,就是体验上比较糟糕,页面加载会变慢很多。

王一之 发表于 2022-10-22 12:44:39

cxxjackie 发表于 2022-10-22 12:28
这样相当于重载了一个新的页面,点击后弹出的提示实际是iframe弹出的,原页面还是没变,不过如果用iframe ...
而且iframe在实际运行中还会有跨域问题,不过这个replace的思路和我的想法差不多(扩展content的dom和网页是共享的,但是window并不

呀嘻耶耶 发表于 2022-10-22 16:03:46

GGMNB!!!!

steven026 发表于 2022-10-22 16:36:24





提示:类似GM_addElement的实现原理
依靠插件的另一种劫持方式,密码晚点发吧,看看有没有人能研究出来=-=



脚本体验师001 发表于 2022-10-22 20:04:02

依稀,这高手过招,小白远远观望,并惊出了一身冷汗。我在想,楼下的能不能来个不世奇才盖过他们呢

王一之 发表于 2022-10-22 20:10:42

steven026 发表于 2022-10-22 16:36
提示:类似GM_addElement的实现原理
依靠插件的另一种劫持方式,密码晚点发吧,看看有没有人能研究出来 ...

哥哥tql,两种方法了

王一之 发表于 2022-10-25 16:05:25

{:4_115:}就没人参与了么

steven026 发表于 2022-10-26 11:34:34

本帖最后由 steven026 于 2022-10-26 11:42 编辑

!(data/attachment/forum/202210/26/113954qxwzu3tfdrr4a3xa.png)
再说一种简单的手动方法,需要借助Devtools,没法在脚本中使用
(getEventListeners是Devtools里内置的函数,没法在其余环境中用,包括扩展。不清楚扩展是否有类似的函数)

具体原理:用Devtools获取事件监听函数,然后直接触发这个函数。

因为不需要点击元素也不用dispatchEvent,所以可以直接传个Object过去
如果还检测了原型链,把原型提前劫持了就行(为了方便就不用Proxy了)

代码:
```js
MouseEvent = Object
let fakeObj = { target: { id: 'btn' }, isTrusted: true }
getEventListeners(document).click.listener(fakeObj)
```

王一之 发表于 2022-10-26 11:42:32

steven026 发表于 2022-10-26 11:34
!(data/attachment/forum/202210/26/113954qxwzu3tfdrr4a3xa.png)
再说一种简单的手动方法,需要借助De ...

getEventListeners只能devtools里用了,不知道devtools还有啥API
页: 1 [2] 3
查看完整版本: [活动结束][有奖答题]网页点击大挑战!2.0