2015年01月06日 16:44:48

如何利用火狐控制台实现网页图片下载

作者: 

本文由一个群友的“如何从一个网页里下载浏览器加载出来的图片?”引发出来一个特立独行的解决思路,参考思路可能还会有更大遐想哦!!绝对值得一读!

今天在群里看到一个群友的问题,怎么下载网页的图片,经过一番的演变,得出了本文的成果,也算是一种思路,还可以演变成干很多事,因此写下此文,希望能够对大家有所启发。

问题:

如何从一个网页里下载浏览器加载出来的图片?

思考思路:

1、利用Ctrl+S保存,取出里面的图片
2、通过火狐控制台的网络面板,复制所有图片链接
3、利用控制台执行解析现有html里的img标签,得到它的链接
4、利用第3点得到的链接,直接借助js请求一个代理下载地址,帮忙下载图片文件

本文便是基于第4点实现。

第一步 获取页面图片链接并请求下载文件

获取所有img标签的链接,无论jQuery还是原生javascript都能做到,下面是它们的实现代码:

jQuery版获取页面图片链接并请求下载文件

  1. $("img").each(function(){
  2. window.open('http://localhost/downloadImg.php?file='+encodeURIComponent($(this).attr("src")));
  3. });

原生javascript版获取页面图片链接并请求下载文件

  1. var tags = document.getElementsByTagName("img");
  2. for (var i = 0; i < tags.length; i++) {
  3. window.open('http://localhost/downloadImg.php?file='+encodeURIComponent(tags[i].src));
  4. }

第二步 文件代理下载程序

  1. <?php
  2. /**
  3. * 图片代理下载程序
  4. * @filename downloadImg.php
  5. * @author Zjmainstay
  6. * @website http://www.zjmainstay.cn
  7. * @usage 存储于http://localhost目录下
  8. */
  9. $filename = urldecode($_GET['file']);
  10. if(preg_match('#/([^/]+)$#i', $filename, $match)) {
  11. $dir = dirname(__FILE__) . '/downloadImg/';
  12. if(!is_dir($dir)) @mkdir($dir, 0755);
  13. $saveFile = $dir . $match[1];
  14. file_put_contents($saveFile, file_get_contents($filename));
  15. echo "Success!";
  16. } else {
  17. echo "Fail!";
  18. }
  19. //自动关闭窗口程序(打开窗口过多,不友好)
  20. echo '<script type="text/javascript">window.close();</script>';

第三步 实操下载

  1. F12打开火狐Firebug控制台,结果如图(一)所示

火狐控制台运行命令

如果你发现F12打开跟图片不一样,那么你需要安装Firebug:
菜单-工具-附加组件-右上角搜索"Firebug"-安装(Ctrl+Shift+A可快速打开附加组件窗口)

  1. 输入第一步的js代码并运行,结果如图(二)所示

火狐控制台运行命令获取图片链接并下载

  1. 查看http://localhost目录下的downloadImg目录,结果如图(三)所示

下载文件列表

附:重要提示

这个代理下载功能(downloadImg.php)切不可对外开放,否则可能被人利用,代理下载携带php后门的图片文件,再结合其他的漏洞利用攻击你的服务器。

另:火狐Save images这个插件就能实现更高级定制实现,官网地址:https://addons.mozilla.org/zh-CN/firefox/addon/save-images/?src=api

(本文完)



未经同意禁止转载!
转载请附带本文原文地址:如何利用火狐控制台实现网页图片下载,首发自 Zjmainstay学习笔记
阅读( 3085 )
看完顺手点个赞呗:
(5 votes)

1.PHP cURL群:PHP cURL高级技术
2.正则表达式群:专精正则表达式
3. QQ联系(加请说明):QQ联系博主(951086941)
4. 邮箱:zjmainstay@163.com
5. 打赏博主:

  1. 模拟登录后数据采集
  2. 网页内容数据采集
  3. 采集内容正则解析
  4. 数据采集难题咨询

阿里云幸运券分享
网站总访问量: