HelloTamperMonk 发表于 2023-3-16 02:00:34

经典问题:如何获取跨域iframe中的元素

* 想必各位大佬都会说加frame内url进match,已经加了
* 接着就是使用iframe.contentWindow.document方法获取文档了,这个也试过了(contentDocument也用过)
* 目前成功能获取到iframe的document层!(data/attachment/forum/202303/16/014220vf6a5kmukabnwahe.png)!(data/attachment/forum/202303/16/014323lbtab2xjbtxkbffi.png)
* 另外证明下* var pageVideoAnchor = iframeDoc.querySelector('#lelevideo');代码确实选中了元素!(data/attachment/forum/202303/16/015128q0zc6a20cyys72l0.png)
* match了的地址以及授予的权限!(data/attachment/forum/202303/16/015346gbphhb6wnpwpdz6w.png)
!(data/attachment/forum/202303/16/015610wiaoi5ke6i10c3ox.png)
另外附上网页链接http://www.mxdm8.com/dongmanplay/2461-1-1.html
* ps:我这个脚本是已经有人实现了完全一样的内容的(https://www.bilibili.com/video/BV1oM4y1Z7k8/?spm_id_from=333.337.search-card.all.click&vd_source=55ef7ba465c1a49045746c4eada07700),能力不行,明明我的idm都能获取到的直链我却始终弄不到手,各位大佬如有高见随意提出,在下感激不尽

HelloTamperMonk 发表于 2023-3-16 02:04:18

另外,选中该video元素的方法我也都试过了,即以下这四种    const pageVideoAnchor = document.querySelector("video.leleplayer-video");
    var pageVideoAnchor =$('#lelevideo');
    var pageVideoAnchor = $('leleplayer-video-current')
    const pageVideoAnchor =document.getElementsByClassName("leleplayer-video-current");,其中jquery方法直接获取到undefined,导致脚本成功执行,也说明脚本只是因为此处错误导致失败

李恒道 发表于 2023-3-16 09:46:15

这网站我进都进不去....
不太理解你具体卡在哪里了

HelloTamperMonk 发表于 2023-3-16 10:52:06

李恒道 发表于 2023-3-16 09:46
这网站我进都进不去....
不太理解你具体卡在哪里了

您换一个网络看看,我这边校园网访问是正常的,本来想做个镜像的发现没云主机了

李恒道 发表于 2023-3-16 11:12:41

HelloTamperMonk 发表于 2023-3-16 10:52
您换一个网络看看,我这边校园网访问是正常的,本来想做个镜像的发现没云主机了 ...

进去了
出问题的代码贴一份看看

HelloTamperMonk 发表于 2023-3-16 11:19:13

李恒道 发表于 2023-3-16 11:12
进去了
出问题的代码贴一份看看

// @run-at       document-end
// @grant      unsafeWindow
// @match      http://www.mxdm8.com/dongmanplay/*.html
// @match      https://danmu.yhdmjx.com/*
// @match      http://danmu.yhdmjx.com/*
// @match      https://de298hc1e0fzm.cloudfront.net/*
(function() {
    'use strict';
var iframe = document.querySelectorAll('iframe');
var iframeDoc = iframe.contentWindow.document;
var pageVideoAnchor = iframeDoc.querySelector('#lelevideo');
    console.log(pageVideoAnchor);
}()

李恒道 发表于 2023-3-16 12:08:17

HelloTamperMonk 发表于 2023-3-16 11:19


感觉还是更精确找一些iframe吧...
我这里测试iframe找到的会来回变
而且lelevideo不是立即加载的

HelloTamperMonk 发表于 2023-3-16 12:43:39

李恒道 发表于 2023-3-16 12:08
感觉还是更精确找一些iframe吧...
我这里测试iframe找到的会来回变
而且lelevideo不是立即加载的 ...

嗯...但是我用setinterval反复queryselect都返回null,另外这个iframe没有id和classname,也不太能定位到{:4_86:}

HelloTamperMonk 发表于 2023-3-16 13:07:04

李恒道 发表于 2023-3-16 12:08
感觉还是更精确找一些iframe吧...
我这里测试iframe找到的会来回变
而且lelevideo不是立即加载的 ...

!(data/attachment/forum/202303/16/130243b3388wuphuge3ge0.png)另外当我反复执行setinterval中的xpath搜索语句在油猴插件执行过程中无论如何都未获取该直链所在的video元素
但是当我停止执行脚本后再执行相同语句,就又搜索得到了
!(data/attachment/forum/202303/16/130529wk7kzab66gk1ipkf.png)
如果仅仅是异步加载应该不会出现综上错误,您觉得有没有可能是站点内有反爬或者反油猴js?

李恒道 发表于 2023-3-16 14:19:38

HelloTamperMonk 发表于 2023-3-16 13:07
!(data/attachment/forum/202303/16/130243b3388wuphuge3ge0.png)另外当我反复执行setinterval中的xp ...

停止执行脚本后再执行相同语句是什么意思
页: [1] 2
查看完整版本: 经典问题:如何获取跨域iframe中的元素