神代綺凛

[Pxder] Pixiv 插画下载器
可按根据指定画师 UID 解析并下载插画(包括动图)、一键下载所有你关注的画师的插画或收藏的插画、智能增量更新下载...
扫描右侧二维码阅读全文
24
2018/08

[Pxder] Pixiv 插画下载器

可按根据指定画师 UID 解析并下载插画(包括动图)、一键下载所有你关注的画师的插画或收藏的插画、智能增量更新下载过的画师的插画。

多线程下载,并且支持使用 HTTP 与 SOCKS 代理。

Head Pic: 「五河琴里」/「秋原ノゾミ Sheila」のイラスト [pixiv]

Pxder

由于 Pixiv 已不再支持客户端的登录 API,请更新到 v2.12.0 及以后的版本以使用新的登录方式

运行示例

此项目基于 Node.js,姑且算自己学习的副产物(实际上是不务正业的产物

最大的缺点是没有 GUI,纯命令行操作,不过也并不难用(信我)

安装及使用等说明请直接看 Github 项目文档

注意

因P站域名遭到 GFW 的 SNI 阻断,这意味着只要你在大陆内,即便你改了 Hosts 也无法直接使用 pxder,请记得使用pxder --setting设置代理或启用直连模式

从现在开始所有在评论中询问因未挂代理而产生的问题都将会被无视

搬瓦工VPS优惠套餐,建站稳如狗,支持支付宝,循环出账94折优惠码BWH3HYATVBJW
年付$47CN2线路,1核/1G内存/20G硬盘/1T@1Gbps【点击购买
季付$47CN2 GIA线路,1核/1G内存/20G硬盘/1T@2.5Gbps【点击购买
Last modification:February 12th, 2021 at 05:31 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment

371 comments

  1. Zicki  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 93.0.4577.82(Google Chrome 93.0.4577.82)
    作者大大,如果他就卡在那該怎麼辦呢?
  2. 小谢  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 93.0.4577.63(Google Chrome 93.0.4577.63)
    这些是原图保存吗?还是保存的预览图?
    1. 神代綺凛  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 93.0.4577.63(Google Chrome 93.0.4577.63)
      @小谢 原图
      1. 小谢  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 93.0.4577.63(Google Chrome 93.0.4577.63)
        @神代綺凛 好的,谢谢~
  3. JIN  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 86.0.4240.198(Google Chrome 86.0.4240.198)
    加了-M参数还是会抓取动图呢
    1. 神代綺凛  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 92.0.4515.159(Google Chrome 92.0.4515.159)
      @JIN-M 是不会去抓取动图的详细信息(帧率),但动图还是会下载的
      1. JIN  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 86.0.4240.198(Google Chrome 86.0.4240.198)
        @神代綺凛 就是节省时间,但是下载的动图压缩包还是和没加-M参数的一样?
        1. 神代綺凛  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 92.0.4515.159(Google Chrome 92.0.4515.159)
  4. Admin  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 90.0.4430.93(Google Chrome 90.0.4430.93)
    怎么可以自定义画师文件夹和作品的文件名规则?
    1. 神代綺凛  Mac OS X 10.15.7(Mac OS X 10.15.7) / Google Chrome 91.0.4472.77(Google Chrome 91.0.4472.77)
      @Admin 暂不支持
  5. AkiPolaris  Windows 10 x64 Edition(Windows 10 x64 Edition) / Firefox 88.0(Firefox 88.0)
    换了台电脑登录上了,但是加-f下载和加-U检漏的时候都有概率会出这种错误:
    下载完一个画师的作品,去下载(或者只是检测?)另一个画师的作品的时候可能会出错(当时分心干别的事情去了,遇到报错直接up enter继续了ORZ,下次一定加--debug)

    Collecting illusts of 1/15 uid 11151341 Sagiri
      [0]   1/2      pid 76579696   カフェと待ち合わせ
      [1]   2/2      pid 82126309   お好きな席にどうぞ!
    
    Collecting illusts of 2/15 uid 1160327 奈川トモ
    Error: EPERM: operation not permitted, lstat 'C:\Users\Polaris\AppData\Roaming\pxder\tmp\(76579696)カフェと待ち合わせ.jpg'
        at Object.lstatSync (node:fs:1505:3)
        at Object.lstatSync (C:\Users\Polaris\AppData\Roaming\npm\node_modules\pxder\node_modules\graceful-fs\polyfills.js:312:16)
        at rimrafSync (C:\Users\Polaris\AppData\Roaming\npm\node_modules\pxder\node_modules\fs-extra\lib\remove\rimraf.js:228:18)
        at C:\Users\Polaris\AppData\Roaming\npm\node_modules\pxder\node_modules\fs-extra\lib\remove\rimraf.js:279:39
        at Array.forEach (<anonymous>)
        at rmkidsSync (C:\Users\Polaris\AppData\Roaming\npm\node_modules\pxder\node_modules\fs-extra\lib\remove\rimraf.js:279:26)
        at rmdirSync (C:\Users\Polaris\AppData\Roaming\npm\node_modules\pxder\node_modules\fs-extra\lib\remove\rimraf.js:269:7)
        at fixWinEPERMSync (C:\Users\Polaris\AppData\Roaming\npm\node_modules\pxder\node_modules\fs-extra\lib\remove\rimraf.js:161:5)
        at Object.rimrafSync [as removeSync] (C:\Users\Polaris\AppData\Roaming\npm\node_modules\pxder\node_modules\fs-extra\lib\remove\rimraf.js:251:26)
        at downloadIllusts (C:\Users\Polaris\AppData\Roaming\npm\node_modules\pxder\src\downloader.js:158:35)
    ERROR {
        "message": "EPERM: operation not permitted, lstat 'C:\\Users\\Polaris\\AppData\\Roaming\\pxder\\tmp\\(76579696)カフ ェと待ち合わせ.jpg'",
        "errno": -4048,
        "syscall": "lstat",
        "code": "EPERM",
        "path": "C:\\Users\\Polaris\\AppData\\Roaming\\pxder\\tmp\\(76579696)カフェと待ち合わせ.jpg"
    }
    1. 神代綺凛  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 90.0.4430.85(Google Chrome 90.0.4430.85)
      @AkiPolaris 猜测是杀毒软件之类的实时检测占用了文件,尝试把 C:\Users\Polaris\AppData\Roaming\pxder\ 加到白名单里
  6. AkiPolaris  Windows 10 x64 Edition(Windows 10 x64 Edition) / Firefox 88.0(Firefox 88.0)
    “oauth.secure.pixiv.net 未发送任何数据。” --chromium edge
    白屏无任何可用返回 --firefox
    是我的问题吗QWQ

    另github的release里是不是写错版本号了,一下子从2.12.1跳到2.21.2

    1. 神代綺凜  Mac OS X 10.15.7(Mac OS X 10.15.7) / Google Chrome 89.0.4389.90(Google Chrome 89.0.4389.90)
      @AkiPolaris 你说的是登录吗,你要挂个代理

      确实写错版本号了,已经更正了

      1. AkiPolaris  Windows 10 x64 Edition(Windows 10 x64 Edition) / Firefox 88.0(Firefox 88.0)
        @神代綺凜 代理挂上了(还换了几个),从通过pxder打开的网页输入密码后,网页端也能正常登录。我这的firefox在点击登录,经过一次app-api.pixiv.net请求后,一直在等待oauth.secure.pixiv.net。(同时也没能在开发者工具中查看到pixiv://开头的请求
        1. 神代綺凜  Mac OS X 10.15.7(Mac OS X 10.15.7) / Google Chrome 89.0.4389.90(Google Chrome 89.0.4389.90)
          @AkiPolaris oauth.secure.pixiv.net 请求卡住,除了网络和代理原因之外我也想不到别的了……或者是不是有 DNS 污染问题
  7. JIN  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 86.0.4240.198(Google Chrome 86.0.4240.198)
    有什么代码是可以跳过抓取动图的吗
    1. 神代綺凜  Mac OS X 10.15.7(Mac OS X 10.15.7) / Google Chrome 89.0.4389.82(Google Chrome 89.0.4389.82)
      @JIN -M 参数,你在 -h 里能看到说明
      1. JIN  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 86.0.4240.198(Google Chrome 86.0.4240.198)
        @神代綺凜 懂了,3Q
  8. AN  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 88.0.4324.150(Google Chrome 88.0.4324.150)
    你好,今日更新完後出現Error: Cannot find module 'lodash'
    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 88.0.4324.96(Google Chrome 88.0.4324.96)
      @AN 已修复,请再更新一下
      1. AN  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 88.0.4324.150(Google Chrome 88.0.4324.150)
        @神代綺凜 哦哦,真快...可以了,謝謝!
  9. JIN  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 86.0.4240.198(Google Chrome 86.0.4240.198)
    Collecting illusts of 1/1 uid 22392525
    RETRY /v1/user/detail?user_id=22392525
    Socket closed
    RETRY /v1/user/detail?user_id=22392525
    Socket closed
    ERROR Socket closed
    这个是什么错误?
  10. 橡皮  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 88.0.4324.146(Google Chrome 88.0.4324.146)
    无法登录,求助!

    Pxder Options
    
    [1] Download path       d:\pixiv
    [2] Download thread     5
    [3] Download timeout    30
    [4] Auto rename         Enabled
    [5] Proxy               socks://127.0.0.1:10808
    [6] Direct mode         Disabled
    [0] Exit
    
    Press a key [1...6 / 0]: 0
    
    Exit
    PS C:\Windows\system32> pxder --login --debug                                                                           
    Pixiv Login
    
    Username: ddhello
    Password: ****************
    https://oauth.secure.pixiv.net/auth/token
    Error: Request failed with status code 400
        at createError (C:\Users\ddhello\AppData\Roaming\npm\node_modules\pxder\node_modules\axios\lib\core\createError.js:16:15)
        at settle (C:\Users\ddhello\AppData\Roaming\npm\node_modules\pxder\node_modules\axios\lib\core\settle.js:17:12)
        at IncomingMessage.handleStreamEnd (C:\Users\ddhello\AppData\Roaming\npm\node_modules\pxder\node_modules\axios\lib\adapters\http.js:260:11)
        at IncomingMessage.emit (events.js:327:22)
        at endReadableNT (internal/streams/readable.js:1327:12)
        at processTicksAndRejections (internal/process/task_queues.js:80:21)
    ERROR {
        "message": "Request failed with status code 400",
        "config": {}
    }
    
    Login fail! Please check your input or proxy setting.
    
    {
      has_error: true,
      errors: {
        system: {
          message: 'Invalid grant_type parameter or parameter missing',
          code: 1508
        }
      },
      error: 'invalid_grant'
    }
    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 88.0.4324.96(Google Chrome 88.0.4324.96)
      @橡皮 请看文章开头
      1. 橡皮  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 88.0.4324.150(Google Chrome 88.0.4324.150)
        @神代綺凜 (´இ皿இ`)蟹蟹
        1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 88.0.4324.96(Google Chrome 88.0.4324.96)
          @橡皮 已经支持新的 OAuth 登录,请更新 pxder 并看 GitHub Readme
          1. 橡皮  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 88.0.4324.150(Google Chrome 88.0.4324.150)
            @神代綺凜 蟹蟹
  11. yogaskung  Android 9(Android 9) / Google Chrome 87.0.0.0(Google Chrome 87.0.0.0)
    这是 pxder 的部分日志

    https://pastebin.ubuntu.com/p/5dGj97BSTh/

  12. yogaskung  Android 9(Android 9) / Google Chrome 87.0.0.0(Google Chrome 87.0.0.0)
    i.pximg.net

    和 pixiv.net 一样,审查器现在会对检测到此 SNI 的连接进行 TCP 重置攻击,有必要对此域名使用域前置

    i-cf.pximg.net 还没有

    1. 神代綺凜  Mac OS X 10.15.7(Mac OS X 10.15.7) / Google Chrome 87.0.4280.141(Google Chrome 87.0.4280.141)
      @yogaskung 确实,已经增加 i.pximg.net 的域前置,请更新到 2.11.6

      如果今后 i-cf.pximg.net 也被针对的话就没办法了,Cloudflare CDN 不支持域前置 希望 i.pximg.net 不要废弃

      1. yogaskung  Android 9(Android 9) / Google Chrome 87.0.0.0(Google Chrome 87.0.0.0)
        @神代綺凜 使用 2.11.6 版本仍然无法下载

        这是日志: https://fars.ee/UsYJ

        奇怪的是,我直接 curl 日志中的 CurrectUrl 是可以连接的

  13. 00211  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 87.0.4280.141(Google Chrome 87.0.4280.141)
    那个。。作者看可否把下载画师作品的顺序颠倒一下。原来下载时,后关注的画师会被先下载,早些关注的画师,下载作品时会被拍在后面。如果把下载顺序颠倒一下,就能确保作品文件夹的顺序和关注顺序完全一致。强迫症一本满足233
    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 86.0.4240.198(Google Chrome 86.0.4240.198)
      @00211 不是必要功能不会更新
  14. Aster  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 87.0.4280.141(Google Chrome 87.0.4280.141)
    大佬您好,想问一下,如果在关注列表取消了关注,已下载的画师文件夹会不会跟着同步删除?
  15. Aster  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 87.0.4280.88(Google Chrome 87.0.4280.88)
    大佬您好,之前使用一直正常,最近下载的时候经常显示重试,然后弹出
    (node:4144) UnhandledPromiseRejectionWarning: RequestError: connect ETIMEDOUT 104.16.17.35:443
    at ClientRequest. (C:\Users\Administrator\AppData\Roaming\npm\node_modules\pxder\node_modules\got\source\request-as-event-emitter.js:178:14)
    at Object.onceWrapper (events.js:422:26)
    at ClientRequest.emit (events.js:327:22)
    at ClientRequest.origin.emit (C:\Users\Administrator\AppData\Roaming\npm\node_modules\pxder\node_modules\@szmarczak\http-timer\source\index.js:37:11)
    at TLSSocket.socketErrorListener (_http_client.js:469:9)
    at TLSSocket.emit (events.js:315:20)
    at emitErrorNT (internal/streams/destroy.js:106:8)
    at emitErrorCloseNT (internal/streams/destroy.js:74:3)
    at processTicksAndRejections (internal/process/task_queues.js:80:21)
    (Use node --trace-warnings ... to show where the warning was created)
    (node:4144) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 28)
    (node:4144) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
    尝试更新下载器就一直卡在0%,然后显示
    npm WARN registry Unexpected warning for https://registry.npmjs.org/: Miscellaneous Warning ETIMEDOUT: request to https://registry.npmjs.org/pxder failed, reason: connect ETIMEDOUT 104.16.26.35:443
    npm WARN registry Using stale data from https://registry.npmjs.org/ due to a request error during revalidation.
    请问这是下载器文件受损了吗?谢谢!
    1. 神代綺凜  Mac OS X 10.15.7(Mac OS X 10.15.7) / Google Chrome 87.0.4280.88(Google Chrome 87.0.4280.88)
      @Aster 网络问题,你网络环境到 cloudflare 不通,pixiv 和 npmjs 都是 cloudflare CDN

      1. 挂代理
      2. --no-cf 参数,会使用旧 CDN 域名下载
  16. 00211  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 84.0.4147.135(Google Chrome 84.0.4147.135)
    大佬,我也是loginfail
    错误代码是

    Error: Request failed with status code 400
    at createError (C:\Users\00211\AppData\Roaming\npm\node_modules\pxder\node_modules\axios\lib\core\createError.js:16:15)
    at settle (C:\Users\00211\AppData\Roaming\npm\node_modules\pxder\node_modules\axios\lib\core\settle.js:17:12)
    at IncomingMessage.handleStreamEnd (C:\Users\00211\AppData\Roaming\npm\node_modules\pxder\node_modules\axios\lib\adapters\http.js:260:11)
    at IncomingMessage.emit (events.js:327:22)
    at endReadableNT (_stream_readable.js:1220:12)
    at processTicksAndRejections (internal/process/task_queues.js:84:21)
    ERROR {
    "message": "Request failed with status code 400",
    "config": {}
    }

    Login fail! Please check your input or proxy setting.

    {
    has_error: true,
    errors: {
    system: {
    message: '103:pixiv ID、またはメールアドレス、パスワードが正しいかチェックしてください。',
    code: 1508
    }
    },
    error: 'invalid_grant'
    }

    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 86.0.4240.198(Google Chrome 86.0.4240.198)
      @00211 你这是帐号密码错了,下面 message 那么明显个日文拿去翻译一下啊
      1. 00211  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 84.0.4147.135(Google Chrome 84.0.4147.135)
        @神代綺凜 好了,之前的密码过于简单不能用。改的复杂了就可以
      2. 00211  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 84.0.4147.135(Google Chrome 84.0.4147.135)
        @神代綺凜 诶?为何会错呢?之前账号密码从没变过。我再查一下
  17. 欧复  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 86.0.4240.111(Google Chrome 86.0.4240.111)
    该评论仅登录用户及评论双方可见
  18. 欧复  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 86.0.4240.111(Google Chrome 86.0.4240.111)
    BUG?
    由于画师全是GIF,无法解析,后面单独下载加了-M。
    然后使用--follow继续全扫的时候,又重新下载一篇???
    我看了下,命名方式不同。单独下载的只是文件名,批量的都加了类似@60ms的帧数.
    所以造成了重复下载,命名方式就不同。
    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 86.0.4240.198(Google Chrome 86.0.4240.198)
      @欧复 修复了,升级到最新版即可
      1. 欧复  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 86.0.4240.111(Google Chrome 86.0.4240.111)
        @神代綺凜 谢谢!!麻烦你了
    2. 神代綺凜  Mac OS X 10.15.7(Mac OS X 10.15.7) / Google Chrome 87.0.4280.88(Google Chrome 87.0.4280.88)
      @欧复 确实,今晚修复
      1. 欧复  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 86.0.4240.111(Google Chrome 86.0.4240.111)
        @神代綺凜 麻烦你了。 还是保留@60ms类似帧数的命名好一些。把单独下载的命名方式改过来
        1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 86.0.4240.198(Google Chrome 86.0.4240.198)
          @欧复 不是的,名字中的帧间隔数据需要单独调用 API 获取,因此大量下载动图时容易频率过高导致 429,因此我才会提供-M参数来不去调用这个 API,自然也就拿不到帧间隔

          要解决你这个重复下载问题,我要做的只是加上一个考虑这种命名方式的判断逻辑而已

  19. イカ  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 87.0.4280.88(Google Chrome 87.0.4280.88)
    大佬你好,请教一下,一直以来工具一直使用正常,
    前一段时间登录突然显示:Login fail! Please check your input or proxy setting.
    发现评论区也有出现同样情况的人,重装了node.js和pxder之后依然没有变化
    梯子一直功能正常,其他设置也从来没动过,
    唯一的变动就是前一段时间把网从100m升级200m,不知道这个会不会有影响....
    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 86.0.4240.198(Google Chrome 86.0.4240.198)
      @イカ 更新到最新版再试
      1. イカ  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 87.0.4280.88(Google Chrome 87.0.4280.88)
        @神代綺凜 刚刚卸载了node.js 重新装了node-v14.15.1-x64

        重装pxder
        C:\Users*>npm i -g pxder
        C:\Users*
        \AppData\Roaming\npm\pxder -> C:\Users***\AppData\Roaming\npm\node_modules\pxder\bin\pxder

        • pxder@2.11.4
          updated 1 package in 20.627s

        然后登录
        Pixiv Login

        Username:
        Password:

        Login fail! Please check your input or proxy setting.

        还是不行

        1. 00211  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 84.0.4147.135(Google Chrome 84.0.4147.135)
          @イカ 我也是这样。前几天还正常。今天忽然和你一样登录不了⌇●﹏●⌇
  20. 喵喵喵  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 87.0.4280.66(Google Chrome 87.0.4280.66)
    打扰一下大佬,用的是软路由的插件输入pxder -f下载正常,但是有时候会不自动下载了 就卡在界面是什么情况呢OωO
    比如 [13] 55/55 pid 85679535 くら子 然后就不动了 没反应了
    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 86.0.4240.198(Google Chrome 86.0.4240.198)
      @喵喵喵 一般是网络问题,可尝试使用质量好一点的代理
      1. 喵喵喵  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 87.0.4280.66(Google Chrome 87.0.4280.66)
        @神代綺凜 感谢 我尝试下换成软件操作不走路由(☆ω☆)