批量下载无版权无肖像权的头像。

无意间在 Github 上看到一个不错的项目 thispersondoesnotexist-js,可以随机生成头像。因为是通过机器生成出来的,并不存在这个世界上,所以不会有版权和肖像权的问题。

每次打开这个链接的时候,都会显示一个新的头像。那么就可以尝试写一个 Javascript 循环来下载头像。

// 设置延迟时间
function delay() {
    return new Promise(resolve => {
        setTimeout(resolve, 1200);
    });
}

for (var i = 0; i < 100; i++) {
    await delay();
    // 创建a标签
    const element = document.createElement("a");
    // 设置链接
    element.setAttribute("href", "https://thispersondoesnotexist.com/image");
    // 设置download属性和文件名字
    element.setAttribute("download", "file.png");
    // 隐藏标签,不显示在界面
    element.style.display = "none";
    // 创建完标签后点击标签,最后删除。
    document.body.appendChild(element);
    element.click();
    document.body.removeChild(element);
}

实际测试的时候发现这个方法并不是那么理想,效率有些慢,1200 毫秒下载 1 个,而且比较占用 CPU 使用率。

后来我又找到一个项目 fakeface,这个项目的头像来源也是来自 thispersondoesnotexist 项目,不过返回的是 JSON 格式的数据,获取到图片的链接,这样就可以批量下载图片了。代码如下:

for (var i = 0; i < 10; i++) {
    // 请求链接
    let response = await fetch("https://fakeface.rest/face/json");
    let json = await response.json();
    // 获取链接
    var image_url = json.image_url;
    // 输出到当前页面
    document.write(image_url + "<br>");
}

也可以尝试一下 批量下载头像 这个项目,基于上面提到的开源项目做的一个 Chrome 插件。

使用 brew 安装 aria2,如果没有安装过 brew,需要先运行下面的命令先安装 brew。

安装后输入命令 brew install aria2 安装 aria2。

先创建一个文本文件 echo > download-list.txt,然后把刚才输出的链接放到这个文本文件里面。
然后运行下面的命令,这样就可以多线程批量下载头像了。

aria2c --max-concurrent-downloads=70 --input-file=download-list.txt