美文网首页
wget批量下载gitlab uploads的文件和图片

wget批量下载gitlab uploads的文件和图片

作者: landon30 | 来源:发表于2018-09-30 12:00 被阅读0次

    wget批量下载gitlab uploads的文件和图片

    1. 背景

      • 下载gitlab的uploads文件,因为wiki可以直接clone,但是上传的文件和图片却无法下载(除非你有gitlab的服务器权限)
      • 之前尝试用写Java工具下载
        • 遍历所有的.md文件
        • 正则表达式搜索"/uploads/[a-z0-9]+/\S+.[a-z]+" 找到上传的文件
        • 然后使用http或者调用wget直接下载
    2. 遇到的问题

      1. 写工具这种方式相对比较麻烦
      2. 一个最大的问题是用http或者wget下载会遇到权限的问题,因为如果要访问或者下载需要gitlab的ldap验证,否则无法下载真正的文件
      3. 浏览器这边直接访问拼接出来的下载url也是先跳转到验证界面,验证通过后才可继续下载
    3. 解决方案

      1. 不在自己使用工具,直接使用wget的批量下载功能
      2. 关于wget的权限验证,可以使用cookies的方式验证(ldap和http验证不同,http的话可以直接指定--http-user选项)
    4. 测试sample命令

      • wget指定了参数--header,指定cookie,这样就可以ldap验证成功

      • --exclude-directories 排除某些目录(不能排除wikis目录,否则uploads也被排除)

      • TODO 目前测试发现无法直接指定uploads目录,只能指定上层目录,然后通过exclude排除不需要的目录如commit

      /usr/local/bin/wget -r -np -nH -R index.html --header="Cookie:sidebar_collapsed=false; remember_user_token=xxx; _gitlab_session=yyy"  https://...gitlab/zzz
      
      
    5. 注意的问题

      • cookie获取可以直接通过chrome浏览器直接获取或者通过开发者工具copy as curl获取cookie部分
      • Runtime.exec() 不等同于直接执行command line命令,exec有很多重载形式
      • du -h查看uploads的文件大小,最好在open一下是否打开
    6. 实战步骤

      1. git clone wikis
      2. git remote -v 查看地址
      3. wget批量下载,指定cookies验证,排除某些目录,下载uploads
    7. 参考

    相关文章

      网友评论

          本文标题:wget批量下载gitlab uploads的文件和图片

          本文链接:https://www.haomeiwen.com/subject/pjcwoftx.html