image auto downloader
image auto downloader
icons killer / js crawler
http only + same-origin
OK
"use strict";
/**
*
* @author xgqfrms
* @license MIT
* @copyright xgqfrms
* @created 2020-10-01
* @modified
*
* @description image auto downloader
* @difficulty Easy Medium Hard
* @complexity O(n)
* @augments
* @example
* @link
* @solutions
*
* @best_solutions
*
*/
const log = console.log;
let divs = [...document.querySelectorAll(`.learn-path-item`)];
for (let i = 0; i < divs.length; i++) {
const div = divs[i];
const img = div.firstElementChild;
// log(`img src =`, img.src);
// window.open(img.src);
autoDownloader(img.src, 1000);
}
const autoDownloader = (url = ``, timer = 0) => {
const body = document.querySelector(`body`);
const a = document.createElement(`a`);
//
a.setAttribute(`href`, url);
a.setAttribute(`download`, true);
// a.setAttribute(`download`, ``);
a.setAttribute(`style`, `display:none;`);
body.insertAdjacentElement(`beforeend`, a);
a.click();
setTimeout(() => {
// DOM remove
body.removeChild(a);
// a.remove();
// delete a;
}, timer);
}
demo
cross-origin bug
www.lanqiao.cn
!== dn-simplecloud.shiyanlou.com
https://dn-simplecloud.shiyanlou.com/1487741005890.png
解决方案
a 域名下面,获取 icons urls, 存储 urls (https://www.lanqiao.cn/paths/)
b 域名下面,遍历 urls, 下载 icons (https://dn-simplecloud.shiyanlou.com)
const log = console.log;
let divs = [...document.querySelectorAll(`.learn-path-item`)];
const urls = [];
for (let i = 0; i < divs.length; i++) {
const div = divs[i];
const img = div.firstElementChild;
urls.push(img.src);
}
// chrome copy
copy(urls);
进入 https://dn-simplecloud.shiyanlou.com/ 域名页面
const urls = [
"https://dn-simplecloud.shiyanlou.com/1487741005890.png",
"https://dn-simplecloud.shiyanlou.com/course/1555406408145_%E3%80%90%E8%B7%AF%E5%BE%84%E3%80%91-%E3%80%90Python%E7%A0%94%E5%8F%91%E5%B7%A5%E7%A8%8B%E5%B8%88%E3%80%91.png",
"https://dn-simplecloud.shiyanlou.com/uid/c7edc0e1f2cfc8f40d1b699aaa32766b/1501840618053.png",
"https://dn-simplecloud.shiyanlou.com/course/1550137107333_%E3%80%90%E8%B7%AF%E5%BE%84%E3%80%91-%E3%80%90%E5%A4%A7%E6%95%B0%E6%8D%AE%E5%B7%A5%E7%A8%8B%E5%B8%88%E3%80%91.png",
"https://dn-simplecloud.shiyanlou.com/1487738666016.png",
"https://dn-simplecloud.shiyanlou.com/1487741048998.png",
"https://dn-simplecloud.shiyanlou.com/1487741143862.png",
"https://dn-simplecloud.shiyanlou.com/course/1582622893410_%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%B8%93%E4%B8%9A%E8%AF%BE%E5%B0%81%E9%9D%A2.png",
"https://dn-simplecloud.shiyanlou.com/course/1552356927768_%E3%80%90%E8%B7%AF%E5%BE%84%E3%80%91-%E3%80%90Java%E7%A0%94%E5%8F%91%E5%B7%A5%E7%A8%8B%E5%B8%88%E3%80%91.png",
"https://dn-simplecloud.shiyanlou.com/1487741188918.png",
"https://dn-simplecloud.shiyanlou.com/uid/c7edc0e1f2cfc8f40d1b699aaa32766b/1501839495188.png",
"https://dn-simplecloud.shiyanlou.com/uid/c7edc0e1f2cfc8f40d1b699aaa32766b/1501837346458.png",
"https://dn-simplecloud.shiyanlou.com/course/1552356125250_%E3%80%90%E8%B7%AF%E5%BE%84%E3%80%91-%E3%80%90Web%E5%89%8D%E7%AB%AF%E5%B7%A5%E7%A8%8B%E5%B8%88%E3%80%91.png",
"https://dn-simplecloud.shiyanlou.com/1487741227106.png",
"https://dn-simplecloud.shiyanlou.com/1487738611078.png",
"https://dn-simplecloud.shiyanlou.com/assets/1596261479814_1596251235455_%E7%BC%96%E7%BB%84%202.png"
];
// 进入 https://dn-simplecloud.shiyanlou.com/ 域名页面
for (const url of urls.length) {
autoDownloader(url, 1000);
}
const autoDownloader = (url = ``, timer = 0) => {
const body = document.querySelector(`body`);
const a = document.createElement(`a`);
//
a.setAttribute(`href`, url);
a.setAttribute(`download`, true);
// a.setAttribute(`download`, ``);
a.setAttribute(`style`, `display:none;`);
body.insertAdjacentElement(`beforeend`, a);
a.click();
setTimeout(() => {
// DOM remove
body.removeChild(a);
// a.remove();
// delete a;
}, timer);
}
OK
why missing some icons???
bug urls
https://dn-simplecloud.shiyanlou.com/uid/c7edc0e1f2cfc8f40d1b699aaa32766b/1501839495188.png
https://dn-simplecloud.shiyanlou.com/uid/c7edc0e1f2cfc8f40d1b699aaa32766b/1501837346458.png
https://dn-simplecloud.shiyanlou.com/course/1552356125250_【路径】-【Web前端工程师】.png
https://dn-simplecloud.shiyanlou.com/1487741227106.png
https://dn-simplecloud.shiyanlou.com/1487738611078.png
https://dn-simplecloud.shiyanlou.com/assets/1596261479814_1596251235455_编组 2.png
// test
const urls = [
"https://dn-simplecloud.shiyanlou.com/uid/c7edc0e1f2cfc8f40d1b699aaa32766b/1501839495188.png",
"https://dn-simplecloud.shiyanlou.com/uid/c7edc0e1f2cfc8f40d1b699aaa32766b/1501837346458.png",
"https://dn-simplecloud.shiyanlou.com/course/1552356125250_%E3%80%90%E8%B7%AF%E5%BE%84%E3%80%91-%E3%80%90Web%E5%89%8D%E7%AB%AF%E5%B7%A5%E7%A8%8B%E5%B8%88%E3%80%91.png",
"https://dn-simplecloud.shiyanlou.com/1487741227106.png",
"https://dn-simplecloud.shiyanlou.com/1487738611078.png",
"https://dn-simplecloud.shiyanlou.com/assets/1596261479814_1596251235455_%E7%BC%96%E7%BB%84%202.png"
];
const autoDownloader = (url = ``, timer = 0) => {
const body = document.querySelector(`body`);
const a = document.createElement(`a`);
//
a.setAttribute(`href`, url);
a.setAttribute(`download`, true);
// a.setAttribute(`download`, ``);
a.setAttribute(`style`, `display:none;`);
body.insertAdjacentElement(`beforeend`, a);
a.click();
setTimeout(() => {
// DOM remove
body.removeChild(a);
// a.remove();
// delete a;
}, timer);
}
for (const url of urls) {
autoDownloader(url, 1000);
}
refs
xgqfrms 2012-2020
www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!
image auto downloader的更多相关文章
- HTML5 download 执行条件
HTML5 download 执行条件 同一个域名下的资源 http only 绝对路径/相对路径 都可以 demo https://cdn.xgqfrms.xyz/ https://cdn.xgqf ...
- 所有selenium相关的库
通过爬虫 获取 官方文档库 如果想获取 相应的库 修改对应配置即可 代码如下 from urllib.parse import urljoin import requests from lxml im ...
- C++11特性——变量部分(using类型别名、constexpr常量表达式、auto类型推断、nullptr空指针等)
#include <iostream> using namespace std; int main() { using cullptr = const unsigned long long ...
- overflow:hidden与margin:0 auto之间的冲突
相对于父容器水平居中的代码margin:0 auto与overflow:hidden之间存在冲突.当这两个属性同时应用在一个DIV上时,在chrome浏览器中将无法居中.至于为啥我也不明白.
- Android Auto开发之一《开始学习Auto 》
共同学习,共同进步, 转载请注明出处.欢迎微信交流:sfssqs,申请注明"Android Car"字样 ================= =================== ...
- width:100%;与width:auto;的区别
<div> <p>1111</p> </div> div{ width:980px; background-color: #ccc; height:30 ...
- SQl 2005 For XMl 简单查询(Raw,Auto,Path模式)(1)
很多人对Xpath可能比较熟悉,但不知道有没有直接操作过数据库,我们都知道 在Sql2005里公支持的几种查询有Raw,Auto模式,页并没有Path和Elements用法等,如果在2000里使用过 ...
- margin:0 auto;不居中
margin:0 auto:不居中可能有以下两个的原因; 1.没有设置宽度<div style="margin:0 auto;"></div>看看上面的代码 ...
- 初学C++ 之 auto关键字(IDE:VS2013)
/*使用auto关键字,需要先赋初值,auto关键字是会根据初值来判断类型*/ auto i = ; auto j = ; cout << "auto i = 5" & ...
随机推荐
- Code Review 的几个技巧
No magic: Explicit not implicit: 覆盖度比深度重要,覆盖度追求100%: 频率比仪式感重要,坐公交蹲厕所打开手机都可以 Review 别人代码,不需要专门组织会议: 粒 ...
- Flutter--Flutter开发环境搭建
一.前言 Flutter 是 Google推出并开源的移动应用开发框架,主打跨平台.高保真.高性能.开发者可以通过 Dart语言开发 App,一套代码同时运行在 iOS 和 Android平台. Fl ...
- Python Data Structure and Algorithms Tutorial
Python - Algorithm Design - Tutorialspoint https://www.tutorialspoint.com/python_data_structure/pyth ...
- Windows10 通过 ssh 映射 Linux 为盘符
一. 安装WinFsp 地址 选择.msi文件下载并安装 二. 安装SSHFS-Win 地址 点击下载64位安装包, 然后安装 三.挂载Linux文件夹 1.映射网络驱动器 输入用户名, 服务器ip地 ...
- 用好Java中的枚举真的没有那么简单
1.概览 在本文中,我们将看到什么是 Java 枚举,它们解决了哪些问题以及如何在实践中使用 Java 枚举实现一些设计模式. enum关键字在 java5 中引入,表示一种特殊类型的类,其总是继承j ...
- Linux 安装mysql总结
第一步:mysql安装包准备 mysql官网下载地址:https://downloads.mysql.com/ 第二步:将mysql安装包上传到服务器 第三步:解压 tar -zxvf mysql-5 ...
- FFT,NTT 笔记
FFT 简介 FFT是干啥的?它是用来加速多项式乘法的.我们平时经常求多项式乘法,比如\((x+1)(x+3)=(x^2+4x+3)\).假设两个式子都是\(n\)项(不足的补0),那朴素的算法是\( ...
- Python 学习笔记(1)
Mac下载安装Python mac 系统自带有python .但就最新的mac系统而言,它自带的python版本为2.*版本. 虽然不影响对于老python项目的运行,但3.*版本中很多语法都发生了改 ...
- VMware vCenter 6.0 安装及群集配置介绍(转载)
转载自http://blog.51cto.com/wzlinux/2094598 一.介绍 VMware vCenter Server 提供了一个可伸缩.可扩展的平台,为虚拟化管理奠定了基础.可集中管 ...
- c++指针 c指针 改变值
1. #include <iostream>using namespace std;void move(int *p) ====>void move(*&p){ ...