wget批量下载gitlab uploads的文件和图片
背景
- 下载gitlab的uploads文件,因为wiki可以直接clone,但是上传的文件和图片却无法下载(除非你有gitlab的服务器权限)
- 之前尝试用写Java工具下载
- 遍历所有的.md文件
- 正则表达式搜索"/uploads/[a-z0-9]+/\S+.[a-z]+" 找到上传的文件
- 然后使用http或者调用wget直接下载
遇到的问题
- 写工具这种方式相对比较麻烦
- 一个最大的问题是用http或者wget下载会遇到权限的问题,因为如果要访问或者下载需要gitlab的ldap验证,否则无法下载真正的文件
- 浏览器这边直接访问拼接出来的下载url也是先跳转到验证界面,验证通过后才可继续下载
解决方案
- 不在自己使用工具,直接使用wget的批量下载功能
- 关于wget的权限验证,可以使用cookies的方式验证(ldap和http验证不同,http的话可以直接指定--http-user选项)
测试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
注意的问题
- cookie获取可以直接通过chrome浏览器直接获取或者通过开发者工具copy as curl获取cookie部分
- Runtime.exec() 不等同于直接执行command line命令,exec有很多重载形式
- du -h查看uploads的文件大小,最好在open一下是否打开
实战步骤
- git clone wikis
- git remote -v 查看地址
- wget批量下载,指定cookies验证,排除某些目录,下载uploads
参考
https://superuser.com/questions/1254687/how-do-i-do-ldap-authentication-with-wget
LDAP is not an authentication mechanism – it is merely an account storage backend; it's essentially the same as storing accounts in MySQL or such. Thus, there is no such thing as "LDAP authentication" as far as HTTP clients are concerned.
相关文章
- wget批量下载gitlab uploads的文件和图片
背景 下载gitlab的uploads文件,因为wiki可以直接clone,但是上传的文件和图片却无法下载(除非你有gitlab的服务器权限) 之前尝试用写Java工具下载 遍历所有的.md文件
- shell/设置外网访问权限
/sbin/route add default gw 10.94.144.1 该网段的默认路由地址即路由器的地址为10.xxx.xxx.1 而路由器是可以访问外网的 由于静态路由在网卡启动时会删除,所
- shell/文件权限操作
文件安全与权限 文件类型 d 目录 l 符号连接 s 套接字文件 b 块设备文件 c 字符设备文件 p 命名管道文件 普通文件 改变权限 符号模式 chmod [who] operator
- shell/条件测试
测试语法 test condition #或 [ condition ] 使用方括号时,要注意在条件两边加上空格。 文件测试 测试状态: 符号 释义 -d 是否是目录 -f 是否
- 常用shell命令
常用命令 查找类 find / -name "export.sh" which 查看可执行文件的位置 whereis 查看文件的位置 locate 配合数据库查看文件位置 find 实际搜寻硬盘查询文
随机推荐
- wget批量下载gitlab uploads的文件和图片
背景 下载gitlab的uploads文件,因为wiki可以直接clone,但是上传的文件和图片却无法下载(除非你有gitlab的服务器权限) 之前尝试用写Java工具下载 遍历所有的.md文件
- shell/设置外网访问权限
/sbin/route add default gw 10.94.144.1 该网段的默认路由地址即路由器的地址为10.xxx.xxx.1 而路由器是可以访问外网的 由于静态路由在网卡启动时会删除,所
- shell/文件权限操作
文件安全与权限 文件类型 d 目录 l 符号连接 s 套接字文件 b 块设备文件 c 字符设备文件 p 命名管道文件 普通文件 改变权限 符号模式 chmod [who] operator
- shell/条件测试
测试语法 test condition #或 [ condition ] 使用方括号时,要注意在条件两边加上空格。 文件测试 测试状态: 符号 释义 -d 是否是目录 -f 是否
- 常用shell命令
常用命令 查找类 find / -name "export.sh" which 查看可执行文件的位置 whereis 查看文件的位置 locate 配合数据库查看文件位置 find 实际搜寻硬盘查询文