100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 采用Iframe解决微信图片防盗链‘此图片来自微信公众平台未经允许不可引用’问题

采用Iframe解决微信图片防盗链‘此图片来自微信公众平台未经允许不可引用’问题

时间:2021-02-04 18:29:07

相关推荐

采用Iframe解决微信图片防盗链‘此图片来自微信公众平台未经允许不可引用’问题

采用Iframe解决微信图片防盗链‘此图片来自微信公众平台未经允许不可引用’问题

最近使用微信公众号爬虫遇到临时链接过期问题,查了各种博客及论坛,好多方法都已经不能用了,目前能用的就是新榜的一个临时链接转永久链接,但需要个人微信登陆,并且效率比较慢,与其这样问什么不把网页直接保存下来呢?于是乎将爬下来的文章网页存了下来,文本及排版正常显示,但图片无法显示,提示“此图片来自微信公众平台未经允许不可引用”,

于是乎查了一下发现是由于微信图片防盗链问题,怎末办呢?经查询主要有三种方法:

1.,在head中增加这段,可能以前是可以的,但现在微信进行了升级,已经失效了。

2.接下来就是将之前的图片路径嵌入到iframe中进行加载,稍微调整了一下,样式不会乱,直接上代码:

<script type="text/javascript">window.onload = function() {var len = document.getElementById('js_content').getElementsByTagName("img").length;for (var i = 0; i < len; i++) {var img = document.getElementById('js_content').getElementsByTagName("img")[0];if (!isParentHidde && !(typeof(img) === undefined) && img.hasAttribute('data-src')) {var path = showImg(0);document.getElementById('js_content').getElementsByTagName("img")[0].parentElement.innerHTML = path;}}function showImg(index) {var parent = document.getElementById('js_content').getElementsByTagName("img")[index].parentElement;var child = document.getElementById('js_content').getElementsByTagName("img")[index];var url = child.getAttribute("data-src") + '&time=' + Math.random();var style = child.getAttribute("style");var parent_style = parent.getAttribute("style");var imgId = 'img_' + index;var frameid = 'frameimg' + Math.random();window.img = '<img id=' + imgId + ' src=\'' + url + '?' + Math.random() + '\' style = \'' + style +'\'/><script>window.onload = function() { parent.document.getElementById(\'' + frameid +'\').height = document.getElementById(\'' + imgId + '\').height+\'px\'; }<' + '/script>';return '<iframe id="' + frameid +'" src="javascript:parent.img;" frameBorder="0" scrolling="no" width="100%" style= "' + parent_style + '"></iframe>';}};</script>

在重写img父元素内容时,遇到了点小插曲,之前是以直接遍历的方式进行覆盖img标签的,但由于重写改变了网页结构,导致再赋值的时候,元素下标已经改变,不能按原有遍历顺序下标去赋值,换个思路,直接取第一个img标签进行覆写,这样一直取到的是最新的元素,以此类推直至取完所有的img标签!

代码简单易懂,如有问题,欢迎留言,相互探讨!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。