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

摘要:
复制所有图像链接。3.使用控制台解析现有html中的img标记。jQuery版本获取页面图像链接并请求下载文件$(“img”)。每个(function(){window.open('http:file='+encodeURIComponent($(this).attr(“src”));

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

问题:

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

思考思路:

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

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

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

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

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

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

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

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

第二步 文件代理下载程序

<?php
/**
 * 图片代理下载程序
 * @filename downloadImg.php
 * @author Zjmainstay
 * @website http://www.zjmainstay.cn
 * @usage 存储于http://localhost目录下
 */
$filename = urldecode($_GET['file']);
if(preg_match('#/([^/]+)$#i', $filename, $match)) {
    $dir = dirname(__FILE__) . '/downloadImg/';
    if(!is_dir($dir)) @mkdir($dir, 0755);
    $saveFile = $dir . $match[1];
    file_put_contents($saveFile, file_get_contents($filename));
    echo "Success!";
} else {
    echo "Fail!";
}
//自动关闭窗口程序(打开窗口过多,不友好)
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后门的图片文件,再结合其他的漏洞利用攻击你的服务器。

(本文完)

转载请附带本文原文地址:如何利用火狐控制台实现网页图片下载,首发自 Zjmainstay学习笔记

免责声明:文章转载自《如何利用火狐控制台下载网页图片》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android通知栏介绍与适配总结使用JCONSOLE远程监控JVM下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vim 中的":wq"和":x"的区别

摘自:http://www.apelearn.com/bbs/thread-7146-1-1.html ":x" 和 ":wq" 的区别如下:(1) :wq 强制性写入文件并退出(存盘并退出 write and quite)。即使文件没有被修改也强制写入,并更新文件的修改时间。(2) :x 写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间;否则不...

java加载properties配置文件的几种方法

 自由自在 废话省略... 1.普通方法 直接上我写的一共配置文件获取类: 配置文件 socket.server.address = 127.0.0.1 socket.server.port = 8511 socket.connect.timeout = 3000 package com.adao.common; import java.io.IOExc...

CSC 命令编译cs文件

CSC 命令编译cs文件 编译 File.cs 以产生 File.exe: csc File.cs 编译 File.cs 以产生 File.dll: csc /target:library File.cs  可缩写成 csc /t:library File.cs  编译 File.cs 并创建 My.exe: csc /out:My.exe Fil...

XNA框架基础——从头开始

从头开始 您已经准备好了一切,现在就让我们开始编码吧!本节您将在XNA Studio模板的帮助下创建一个简单的游戏项目,然后在Update和Draw方法中添加少量代码以实现一些小功能。在下一小节学习了SpriteBatch类之后,您将创建您的第一个游戏。 您的第一个项目 打开XNA Game Studio Express,在菜单栏中选择“文件→新建项目...

转:Windows 7下安装CentOS双系统

最近工作空闲下来了,于是就想利用这段时间学习一下Linux.首先得有一个Linux环境,因此利用自己的电脑,安装了双系统。因为公司大部分Linux都是安装的CentOS,所以我也选择了这个版本。   1.下载CentOS的安装盘   我的电脑是32位的,所以下载了i386版本的CentOS-6.2-i386-bin-DVD.iso   注:应该下载硬盘安装...

创建podSpec,使用pod管理第三方库

 提要:   podfile文件会先读取.podspec文件,根据.podspec文件的指向来下载第三方库到项目中。   本文先通过一、二、三这三个步骤讲解了如何建立一个"podspec文件在本地.cocoaPod库,第三方库在远程机器"的例子。   后文中的第四项,讲解了"podspec文件在本地项目中,第三方库在远程机器"的设置方法;最后讲了"pods...