├── Disclaimer.md └── README.md /Disclaimer.md: -------------------------------------------------------------------------------- 1 | **本工具的使用可能对网站产生不良影响,包括但不限于产生大量垃圾数据,您需在使用本工具前充分考虑此类风险,我们将不对使用本工具造成的您本人或任何第三方的损害后果承担责任。** 2 | 3 | 如果您获得了本软件的 License,该 License 下的权益仅限您个人使用,禁止以任何形式复制、分发、传播该 License。 4 | 5 | 禁止对本软件实施逆向工程、反编译、试图破译源代码等行为。 6 | 7 | 如果发现上述禁止行为,我们将保留追究您法律责任的权利。 8 | 9 | **如您在使用本工具的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。** 10 | 11 | 在安装并使用本工具前,请您务必审慎阅读、充分理解各条款内容,限制、免责条款或者其他涉及您重大权益的条款可能会以加粗、加下划线等形式提示您重点注意。除非您已充分阅读、完全理解并接受本协议所有条款,否则,请您不要安装并使用本工具。您的使用行为或者您以其他任何明示或者默示方式表示接受本协议的,即视为您已阅读并同意本协议的约束。 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

Rad

2 | 3 | rad,全名 `Radium`,名字来源于放射性元素——镭, 从一个URL开始,辐射到一整个站点空间 4 | 5 | > 一款专为安全扫描而生的浏览器爬虫 6 | 7 | ## 下载地址 8 | 9 | https://github.com/chaitin/rad/releases 10 | 11 | 12 | ## 快速使用 13 | 14 | 在使用之前,请务必阅读并同意 [Disclaimer](./Disclaimer.md)文件中的条款,否则请勿安装使用本工具。 15 | 16 | 本工具需要提前装好新版本的 **`chrome`**,否则将无法使用 17 | 18 | 1. 基本使用 19 | 20 | ``` 21 | rad -t http://example.com 22 | ``` 23 | 24 | 2. 需要手动登录的情况 25 | 26 | ``` 27 | rad -t http://example.com -wait-login 28 | ``` 29 | 30 | 执行以上命令会自动禁用无头浏览模式,开启一个浏览器供手动登录。 31 | 在登录完毕后在命令行界面点击回车键继续爬取。 32 | 33 | 3. 将爬取基本结果导出为文件 34 | 35 | ``` 36 | rad -t http://example.com -text-output result.txt 37 | ``` 38 | 39 | 以上命令会将爬取到的URL输出到result.txt中 40 | 格式为 `Method URL` 例:`GET http://example.com` 41 | 42 | 4. 导出完整请求 43 | 44 | ``` 45 | rad -t http://example.com -full-text-output result.txt 46 | ``` 47 | 48 | 49 | 5. 导出完整请求为JSON 50 | 51 | ``` 52 | rad -t http://example.com -json result.json 53 | ``` 54 | 55 | 6. 与xray联动 56 | 57 | * 社区版:设置上级代理为xray监听地址 58 | 运行xray: 59 | 60 | ``` 61 | xray webscan --listen 127.0.0.1:7777 --html-output proxy.html 62 | ``` 63 | 64 | 运行rad: 65 | 66 | ``` 67 | rad -t http://example.com -http-proxy 127.0.0.1:7777 68 | ``` 69 | 70 | * 高级版对 rad 进行了深度融合,下载后可以一键使用: 71 | 72 | ``` 73 | xray webscan --browser-crawler http://example.com --html-output vuln.html 74 | ``` 75 | 76 | ## 参数配置 77 | 78 | rad首次运行后会自动在当前目录生成rad_config.yml配置文件 79 | 80 | ```yaml 81 | exec_path: "" # 启动chrome的路径 82 | disable_headless: false # 禁用无头模式 83 | force_sandbox: false # 强制开启sandbox;为 false 时默认开启沙箱,但在容器中会关闭沙箱。为true时强制启用沙箱,可能导致在docker中无法使用。 84 | enable_image: false # 启用图片显示 85 | parent_path_detect: true # 是否启用父目录探测功能 86 | proxy: "" # 代理配置 87 | user_agent: "" # 请求user-agent配置 88 | domain_headers: # 请求头配置:[]{domain,map[headerKey]HeaderValue} 89 | - domain: '*' # 为哪些域名设置header,glob语法 90 | headers: { # 请求头,map[key]value 91 | Cookie: somecookie 92 | } 93 | max_depth: 10 # 最大页面深度限制 94 | navigate_timeout_second: 10 # 访问超时时间,单位秒 95 | load_timeout_second: 10 # 加载超时时间,单位秒 96 | retry: 0 # 页面访问失败后的重试次数 97 | page_analyze_timeout_second: 300 # 页面分析超时时间,单位秒 98 | max_interactive: 1000 # 单个页面最大交互次数 99 | max_interactive_depth: 10 # 页面交互深度限制 100 | max_page_concurrent: 10 # 最大页面并发(不大于10) 101 | max_page_visit: 1000 # 总共允许访问的页面数量 102 | max_page_visit_per_site: 1000 # 每个站点最多访问的页面数量 103 | element_filter_strength: 0 # 过滤同站点相似元素强度,1-7取值,强度逐步增大,为0时不进行跨页面元素过滤 104 | new_task_filter_config: # 检查某个链接是否应该被加入爬取队列 105 | hostname_allowed: [ ] # 允许访问的 Hostname,支持格式如 t.com、*.t.com、1.1.1.1、1.1.1.1/24、1.1-4.1.1-8 106 | hostname_disallowed: [ ] # 不允许访问的 Hostname,支持格式如 t.com、*.t.com、1.1.1.1、1.1.1.1/24、1.1-4.1.1-8 107 | port_allowed: [ ] # 允许访问的端口, 支持的格式如: 80、80-85 108 | port_disallowed: [ ] # 不允许访问的端口, 支持的格式如: 80、80-85 109 | path_allowed: [ ] # 允许访问的路径,支持的格式如: test、*test* 110 | path_disallowed: [ ] # 不允许访问的路径, 支持的格式如: test、*test* 111 | query_key_allowed: [ ] # 允许访问的 Query Key,支持的格式如: test、*test* 112 | query_key_disallowed: [ ] # 不允许访问的 Query Key, 支持的格式如: test、*test* 113 | fragment_allowed: [ ] # 允许访问的 Fragment, 支持的格式如: test、*test* 114 | fragment_disallowed: [ ] # 不允许访问的 Fragment, 支持的格式如: test、*test* 115 | post_key_allowed: [ ] # 允许访问的 Post Body 中的参数, 支持的格式如: test、*test* 116 | post_key_disallowed: [ ] # 不允许访问的 Post Body 中的参数, 支持的格式如: test、*test* 117 | request_send_filter_config: # 检查某个请求是否应该被发送 118 | hostname_allowed: [ ] # 允许访问的 Hostname,支持格式如 t.com、*.t.com、1.1.1.1、1.1.1.1/24、1.1-4.1.1-8 119 | hostname_disallowed: [ ] # 不允许访问的 Hostname,支持格式如 t.com、*.t.com、1.1.1.1、1.1.1.1/24、1.1-4.1.1-8 120 | port_allowed: [ ] # 允许访问的端口, 支持的格式如: 80、80-85 121 | port_disallowed: [ ] # 不允许访问的端口, 支持的格式如: 80、80-85 122 | path_allowed: [ ] # 允许访问的路径,支持的格式如: test、*test* 123 | path_disallowed: [ ] # 不允许访问的路径, 支持的格式如: test、*test* 124 | query_key_allowed: [ ] # 允许访问的 Query Key,支持的格式如: test、*test* 125 | query_key_disallowed: [ ] # 不允许访问的 Query Key, 支持的格式如: test、*test* 126 | fragment_allowed: [ ] # 允许访问的 Fragment, 支持的格式如: test、*test* 127 | fragment_disallowed: [ ] # 不允许访问的 Fragment, 支持的格式如: test、*test* 128 | post_key_allowed: [ ] # 允许访问的 Post Body 中的参数, 支持的格式如: test、*test* 129 | post_key_disallowed: [ ] # 不允许访问的 Post Body 中的参数, 支持的格式如: test、*test* 130 | request_output_filter_config: # 检查某个请求是否应该被输出 131 | hostname_allowed: [ ] # 允许访问的 Hostname,支持格式如 t.com、*.t.com、1.1.1.1、1.1.1.1/24、1.1-4.1.1-8 132 | hostname_disallowed: [ ] # 不允许访问的 Hostname,支持格式如 t.com、*.t.com、1.1.1.1、1.1.1.1/24、1.1-4.1.1-8 133 | port_allowed: [ ] # 允许访问的端口, 支持的格式如: 80、80-85 134 | port_disallowed: [ ] # 不允许访问的端口, 支持的格式如: 80、80-85 135 | path_allowed: [ ] # 允许访问的路径,支持的格式如: test、*test* 136 | path_disallowed: [ ] # 不允许访问的路径, 支持的格式如: test、*test* 137 | query_key_allowed: [ ] # 允许访问的 Query Key,支持的格式如: test、*test* 138 | query_key_disallowed: [ ] # 不允许访问的 Query Key, 支持的格式如: test、*test* 139 | fragment_allowed: [ ] # 允许访问的 Fragment, 支持的格式如: test、*test* 140 | fragment_disallowed: [ ] # 不允许访问的 Fragment, 支持的格式如: test、*test* 141 | post_key_allowed: [ ] # 允许访问的 Post Body 中的参数, 支持的格式如: test、*test* 142 | post_key_disallowed: [ ] # 不允许访问的 Post Body 中的参数, 支持的格式如: test、*test* 143 | ``` 144 | 145 | ## 讨论 146 | 147 | 如有问题可以在 GitHub 提 issue, 也可在下方的讨论组里 148 | 149 | 1. GitHub issue: https://github.com/chaitin/xray/issues 150 | 1. QQ 群: 717365081 151 | 1. 微信群: 扫描以下二维码加我的个人微信,会把大家拉到 `xray` 官方微信群 152 | 153 | 154 | 155 | 156 | --------------------------------------------------------------------------------