ronin-web 1.0.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +3 -2
  3. data/.gitignore +1 -0
  4. data/.rubocop.yml +5 -0
  5. data/.ruby-version +1 -1
  6. data/ChangeLog.md +46 -1
  7. data/Gemfile +25 -12
  8. data/README.md +257 -51
  9. data/Rakefile +9 -0
  10. data/data/completions/ronin-web +203 -0
  11. data/gemspec.yml +18 -5
  12. data/lib/ronin/web/cli/browser_options.rb +92 -0
  13. data/lib/ronin/web/cli/browser_shell.rb +448 -0
  14. data/lib/ronin/web/cli/command.rb +1 -1
  15. data/lib/ronin/web/cli/commands/browser.rb +373 -0
  16. data/lib/ronin/web/cli/commands/completion.rb +63 -0
  17. data/lib/ronin/web/cli/commands/diff.rb +60 -8
  18. data/lib/ronin/web/cli/commands/html.rb +21 -33
  19. data/lib/ronin/web/cli/commands/irb.rb +1 -1
  20. data/lib/ronin/web/cli/commands/new/{webapp.rb → app.rb} +8 -8
  21. data/lib/ronin/web/cli/commands/new/nokogiri.rb +4 -4
  22. data/lib/ronin/web/cli/commands/new/server.rb +1 -1
  23. data/lib/ronin/web/cli/commands/new/spider.rb +1 -1
  24. data/lib/ronin/web/cli/commands/new.rb +5 -3
  25. data/lib/ronin/web/cli/commands/reverse_proxy.rb +1 -1
  26. data/lib/ronin/web/cli/commands/screenshot.rb +186 -0
  27. data/lib/ronin/web/cli/commands/server.rb +1 -1
  28. data/lib/ronin/web/cli/commands/session_cookie.rb +265 -0
  29. data/lib/ronin/web/cli/commands/spider.rb +61 -467
  30. data/lib/ronin/web/cli/commands/user_agent.rb +177 -0
  31. data/lib/ronin/web/cli/commands/vulns.rb +463 -0
  32. data/lib/ronin/web/cli/commands/wordlist.rb +484 -0
  33. data/lib/ronin/web/cli/commands/xml.rb +149 -0
  34. data/lib/ronin/web/cli/js_shell.rb +69 -0
  35. data/lib/ronin/web/cli/ruby_shell.rb +1 -1
  36. data/lib/ronin/web/cli/spider_options.rb +919 -0
  37. data/lib/ronin/web/cli.rb +3 -1
  38. data/lib/ronin/web/html.rb +1 -1
  39. data/lib/ronin/web/root.rb +1 -1
  40. data/lib/ronin/web/version.rb +2 -2
  41. data/lib/ronin/web/xml.rb +1 -1
  42. data/lib/ronin/web.rb +4 -364
  43. data/man/ronin-web-browser.1 +92 -0
  44. data/man/ronin-web-browser.1.md +96 -0
  45. data/man/ronin-web-completion.1 +76 -0
  46. data/man/ronin-web-completion.1.md +78 -0
  47. data/man/ronin-web-diff.1 +14 -21
  48. data/man/ronin-web-diff.1.md +13 -6
  49. data/man/ronin-web-html.1 +30 -46
  50. data/man/ronin-web-html.1.md +27 -17
  51. data/man/ronin-web-irb.1 +9 -16
  52. data/man/ronin-web-irb.1.md +6 -2
  53. data/man/ronin-web-new-app.1.md +39 -0
  54. data/man/ronin-web-new-nokogiri.1 +9 -20
  55. data/man/ronin-web-new-nokogiri.1.md +5 -5
  56. data/man/ronin-web-new-server.1 +11 -23
  57. data/man/ronin-web-new-server.1.md +5 -5
  58. data/man/ronin-web-new-spider.1 +44 -88
  59. data/man/ronin-web-new-spider.1.md +37 -37
  60. data/man/ronin-web-new.1 +18 -30
  61. data/man/ronin-web-new.1.md +15 -11
  62. data/man/ronin-web-reverse-proxy.1 +33 -38
  63. data/man/ronin-web-reverse-proxy.1.md +20 -14
  64. data/man/ronin-web-screenshot.1 +56 -0
  65. data/man/ronin-web-screenshot.1.md +56 -0
  66. data/man/ronin-web-server.1 +15 -29
  67. data/man/ronin-web-server.1.md +13 -9
  68. data/man/ronin-web-session-cookie.1 +38 -0
  69. data/man/ronin-web-session-cookie.1.md +41 -0
  70. data/man/ronin-web-spider.1 +121 -130
  71. data/man/ronin-web-spider.1.md +115 -66
  72. data/man/ronin-web-user-agent.1 +44 -0
  73. data/man/ronin-web-user-agent.1.md +46 -0
  74. data/man/ronin-web-vulns.1 +175 -0
  75. data/man/ronin-web-vulns.1.md +177 -0
  76. data/man/ronin-web-wordlist.1 +258 -0
  77. data/man/ronin-web-wordlist.1.md +263 -0
  78. data/man/ronin-web-xml.1 +43 -0
  79. data/man/ronin-web-xml.1.md +46 -0
  80. data/man/ronin-web.1 +67 -18
  81. data/man/ronin-web.1.md +55 -4
  82. data/scripts/setup +58 -0
  83. metadata +121 -30
  84. data/lib/ronin/web/mechanize.rb +0 -84
  85. data/man/ronin-web-new-webapp.1.md +0 -39
  86. /data/data/new/{webapp → app}/.gitignore +0 -0
  87. /data/data/new/{webapp → app}/.ruby-version.erb +0 -0
  88. /data/data/new/{webapp → app}/Dockerfile.erb +0 -0
  89. /data/data/new/{webapp → app}/Gemfile +0 -0
  90. /data/data/new/{webapp → app}/app.rb.erb +0 -0
  91. /data/data/new/{webapp → app}/config.ru +0 -0
  92. /data/data/new/{webapp → app}/docker-compose.yml.erb +0 -0
data/lib/ronin/web/cli.rb CHANGED
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # ronin-web - A collection of useful web helper methods and commands.
4
4
  #
5
- # Copyright (c) 2006-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
5
+ # Copyright (c) 2006-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
6
6
  #
7
7
  # ronin-web is free software: you can redistribute it and/or modify
8
8
  # it under the terms of the GNU General Public License as published by
@@ -19,6 +19,7 @@
19
19
  #
20
20
 
21
21
  require 'ronin/web/version'
22
+ require 'ronin/core/cli/help/banner'
22
23
 
23
24
  require 'command_kit/commands'
24
25
  require 'command_kit/commands/auto_load'
@@ -41,6 +42,7 @@ module Ronin
41
42
  namespace: "#{self}::Commands"
42
43
  )
43
44
  include CommandKit::Options::Version
45
+ include Core::CLI::Help::Banner
44
46
 
45
47
  command_name 'ronin-web'
46
48
  version Ronin::Web::VERSION
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # ronin-web - A collection of useful web helper methods and commands.
4
4
  #
5
- # Copyright (c) 2006-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
5
+ # Copyright (c) 2006-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
6
6
  #
7
7
  # ronin-web is free software: you can redistribute it and/or modify
8
8
  # it under the terms of the GNU General Public License as published by
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # ronin-web - A collection of useful web helper methods and commands.
4
4
  #
5
- # Copyright (c) 2006-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
5
+ # Copyright (c) 2006-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
6
6
  #
7
7
  # ronin-web is free software: you can redistribute it and/or modify
8
8
  # it under the terms of the GNU General Public License as published by
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # ronin-web - A collection of useful web helper methods and commands.
4
4
  #
5
- # Copyright (c) 2006-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
5
+ # Copyright (c) 2006-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
6
6
  #
7
7
  # ronin-web is free software: you can redistribute it and/or modify
8
8
  # it under the terms of the GNU General Public License as published by
@@ -21,6 +21,6 @@
21
21
  module Ronin
22
22
  module Web
23
23
  # ronin-web Version
24
- VERSION = '1.0.2'
24
+ VERSION = '2.0.0'
25
25
  end
26
26
  end
data/lib/ronin/web/xml.rb CHANGED
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # ronin-web - A collection of useful web helper methods and commands.
4
4
  #
5
- # Copyright (c) 2006-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
5
+ # Copyright (c) 2006-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
6
6
  #
7
7
  # ronin-web is free software: you can redistribute it and/or modify
8
8
  # it under the terms of the GNU General Public License as published by
data/lib/ronin/web.rb CHANGED
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # ronin-web - A collection of useful web helper methods and commands.
4
4
  #
5
- # Copyright (c) 2006-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
5
+ # Copyright (c) 2006-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
6
6
  #
7
7
  # ronin-web is free software: you can redistribute it and/or modify
8
8
  # it under the terms of the GNU General Public License as published by
@@ -18,380 +18,20 @@
18
18
  # along with ronin-web. If not, see <https://www.gnu.org/licenses/>.
19
19
  #
20
20
 
21
- require 'ronin/web/html'
22
- require 'ronin/web/xml'
21
+ require 'ronin/support/web'
23
22
  require 'ronin/web/spider'
24
23
  require 'ronin/web/server'
25
24
  require 'ronin/web/user_agents'
26
- require 'ronin/web/mechanize'
27
25
  require 'ronin/web/version'
28
- require 'ronin/support/network/http'
29
26
 
30
- require 'uri'
31
- require 'open-uri'
32
- require 'nokogiri'
33
- require 'nokogiri/ext'
34
- require 'nokogiri/diff'
35
27
  require 'open_namespace'
36
28
 
37
29
  module Ronin
38
30
  #
39
- # Top-level web helper methods.
31
+ # Top-level namespace for `ronin-web`.
40
32
  #
41
33
  module Web
42
34
  include OpenNamespace
43
-
44
- #
45
- # Parses the body of a document into a HTML document object.
46
- #
47
- # @param [String, IO] body
48
- # The body of the document to parse.
49
- #
50
- # @yield [doc]
51
- # If a block is given, it will be passed the newly created document
52
- # object.
53
- #
54
- # @yieldparam [Nokogiri::HTML::Document] doc
55
- # The new HTML document object.
56
- #
57
- # @return [Nokogiri::HTML::Document]
58
- # The new HTML document object.
59
- #
60
- # @see http://rubydoc.info/gems/nokogiri/Nokogiri/HTML/Document
61
- #
62
- # @api public
63
- #
64
- def self.html(body,&block)
65
- HTML.parse(body,&block)
66
- end
67
-
68
- #
69
- # Creates a new Nokogiri::HTML::Builder.
70
- #
71
- # @yield []
72
- # The block that will be used to construct the HTML document.
73
- #
74
- # @return [Nokogiri::HTML::Builder]
75
- # The new HTML builder object.
76
- #
77
- # @example
78
- # Web.build_html do
79
- # html {
80
- # body {
81
- # div(style: 'display:none;') {
82
- # object(classid: 'blabla')
83
- # }
84
- # }
85
- # }
86
- # end
87
- #
88
- # @see http://rubydoc.info/gems/nokogiri/Nokogiri/HTML/Builder
89
- #
90
- # @api public
91
- #
92
- def self.build_html(&block)
93
- HTML.build(&block)
94
- end
95
-
96
- #
97
- # Parses the body of a document into a XML document object.
98
- #
99
- # @param [String, IO] body
100
- # The body of the document to parse.
101
- #
102
- # @yield [doc]
103
- # If a block is given, it will be passed the newly created document
104
- # object.
105
- #
106
- # @yieldparam [Nokogiri::XML::Document] doc
107
- # The new XML document object.
108
- #
109
- # @return [Nokogiri::XML::Document]
110
- # The new XML document object.
111
- #
112
- # @see http://rubydoc.info/gems/nokogiri/Nokogiri/XML/Document
113
- #
114
- # @api public
115
- #
116
- def self.xml(body,&block)
117
- XML.parse(body,&block)
118
- end
119
-
120
- #
121
- # Creates a new Nokogiri::XML::Builder.
122
- #
123
- # @yield []
124
- # The block that will be used to construct the XML document.
125
- #
126
- # @return [Nokogiri::XML::Builder]
127
- # The new XML builder object.
128
- #
129
- # @example
130
- # Web.build_xml do
131
- # post(id: 2) {
132
- # title { text('some example') }
133
- # body { text('this is one contrived example.') }
134
- # }
135
- # end
136
- #
137
- # @see http://rubydoc.info/gems/nokogiri/Nokogiri/XML/Builder
138
- #
139
- # @api public
140
- #
141
- def self.build_xml(&block)
142
- XML.build(&block)
143
- end
144
-
145
- #
146
- # Opens a URL as a temporary file.
147
- #
148
- # @param [String, :random, :chrome, :chrome_linux, :chrome_macos,
149
- # :chrome_windows, :chrome_iphone, :chrome_ipad,
150
- # :chrome_android, :firefox, :firefox_linux, :firefox_macos,
151
- # :firefox_windows, :firefox_iphone, :firefox_ipad,
152
- # :firefox_android, :safari, :safari_macos, :safari_iphone,
153
- # :safari_ipad, :edge, :linux, :macos, :windows, :iphone,
154
- # :ipad, :android, nil] user_agent
155
- # The `User-Agent` string to use.
156
- #
157
- # @param [String, URI::HTTP, nil] proxy
158
- # The proxy URI to use.
159
- #
160
- # @param [String, URI::HTTP, nil] referer
161
- # The optional `Referer` header to send.
162
- #
163
- # @param [String, Ronin::Support::Network::HTTP::Cookie, nil] cookie
164
- # The optional `Cookie` header to send.
165
- #
166
- # @param [Hash{Symbol => Object}] kwargs
167
- # Additional keyword arguments.
168
- #
169
- # @option kwargs [String] :user
170
- # The HTTP Basic Authentication user name.
171
- #
172
- # @option kwargs [String] :password
173
- # The HTTP Basic Authentication password.
174
- #
175
- # @option kwargs [Proc] :content_length_proc
176
- # A callback which will be passed the content-length of the HTTP
177
- # response.
178
- #
179
- # @option kwargs [Proc] :progress_proc
180
- # A callback which will be passed the size of each fragment, once
181
- # received from the server.
182
- #
183
- # @return [File]
184
- # The contents of the URL.
185
- #
186
- # @example Open a given URL.
187
- # Web.open('https://www.example.com/')
188
- #
189
- # @example Open a given URL, using a built-in User-Agent:
190
- # Web.open('https://www.example.com/', user_agent: :linux)
191
- #
192
- # @example Open a given URL, using a custom User-Agent string:
193
- # Web.open('https://www.example.com/', user_agent: '...')
194
- #
195
- # @example Open a given URL, using a custom User-Agent string.
196
- # Web.open('https://www.example.com/', user_agent: 'the future')
197
- #
198
- # @see http://rubydoc.info/stdlib/open-uri
199
- #
200
- # @api public
201
- #
202
- def self.open(url, proxy: Support::Network::HTTP.proxy,
203
- user_agent: Support::Network::HTTP.user_agent,
204
- referer: nil,
205
- cookie: nil,
206
- **kwargs)
207
- uri = URI(url)
208
- options = {proxy: proxy, **kwargs}
209
-
210
- if user_agent
211
- options['User-Agent'] = case user_agent
212
- when Symbol
213
- Support::Network::HTTP::UserAgents[user_agent]
214
- else
215
- user_agent
216
- end
217
- end
218
-
219
- options['Referer'] = referer if referer
220
- options['Cookie'] = cookie if cookie
221
-
222
- return uri.open(options)
223
- end
224
-
225
- #
226
- # A persistent Mechanize Agent.
227
- #
228
- # @return [Mechanize]
229
- # The persistent Mechanize Agent.
230
- #
231
- # @see Mechanize
232
- #
233
- # @api public
234
- #
235
- def self.agent
236
- @agent ||= Mechanize.new
237
- end
238
-
239
- #
240
- # Creates a Mechanize Page for the contents at a given URL.
241
- #
242
- # @param [URI::Generic, String] url
243
- # The URL to request.
244
- #
245
- # @param [Array, Hash] parameters
246
- # Additional parameters for the GET request.
247
- #
248
- # @param [Hash] headers
249
- # Additional headers for the GET request.
250
- #
251
- # @yield [page]
252
- # If a block is given, it will be passed the page for the requested
253
- # URL.
254
- #
255
- # @yieldparam [Mechanize::Page] page
256
- # The requested page.
257
- #
258
- # @return [Mechanize::Page]
259
- # The requested page.
260
- #
261
- # @example
262
- # Web.get('http://www.rubyinside.com')
263
- # # => Mechanize::Page
264
- #
265
- # @example
266
- # Web.get('http://www.rubyinside.com') do |page|
267
- # page.search('div.post/h2/a').each do |title|
268
- # puts title.inner_text
269
- # end
270
- # end
271
- #
272
- # @see http://rubydoc.info/gems/mechanize/Mechanize/Page
273
- #
274
- # @api public
275
- #
276
- def self.get(url,parameters={},headers={},&block)
277
- agent.get(url,parameters,nil,headers,&block)
278
- end
279
-
280
- #
281
- # Requests the body of the Mechanize Page created from the response
282
- # of the given URL.
283
- #
284
- # @param [URI::Generic, String] url
285
- # The URL to request.
286
- #
287
- # @param [Array, Hash] parameters
288
- # Additional parameters for the GET request.
289
- #
290
- # @param [Hash] headers
291
- # Additional headers for the GET request.
292
- #
293
- # @yield [body]
294
- # If a block is given, it will be passed the body of the page.
295
- #
296
- # @yieldparam [String] body
297
- # The requested body of the page.
298
- #
299
- # @return [String]
300
- # The requested body of the page.
301
- #
302
- # @example
303
- # Web.get_body('http://www.rubyinside.com') # => String
304
- #
305
- # @example
306
- # Web.get_body('http://www.rubyinside.com') do |body|
307
- # puts body
308
- # end
309
- #
310
- # @see get
311
- #
312
- # @api public
313
- #
314
- def self.get_body(url,parameters={},headers={})
315
- body = get(url,parameters,headers).body
316
-
317
- yield body if block_given?
318
- return body
319
- end
320
-
321
- #
322
- # Posts to a given URL and creates a Mechanize Page from the response.
323
- #
324
- # @param [URI::Generic, String] url
325
- # The URL to request.
326
- #
327
- # @param [Hash] query
328
- # Additional query parameters for the POST request.
329
- #
330
- # @param [Hash] headers
331
- # Additional headers for the POST request.
332
- #
333
- # @yield [page]
334
- # If a block is given, it will be passed the page for the requested
335
- # URL.
336
- #
337
- # @yieldparam [Mechanize::Page] page
338
- # The requested page.
339
- #
340
- # @return [Mechanize::Page]
341
- # The requested page.
342
- #
343
- # @example
344
- # Web.post('http://www.rubyinside.com')
345
- # # => Mechanize::Page
346
- #
347
- # @see http://rubydoc.info/gems/mechanize/Mechanize/Page
348
- #
349
- # @api public
350
- #
351
- def self.post(url,query={},headers={},&block)
352
- agent.post(url,query,headers,&block)
353
- end
354
-
355
- #
356
- # Posts to a given URL and returns the body of the Mechanize Page
357
- # created from the response.
358
- #
359
- # @param [URI::Generic, String] url
360
- # The URL to request.
361
- #
362
- # @param [Hash] query
363
- # Additional query parameters for the POST request.
364
- #
365
- # @param [Hash] headers
366
- # Additional headers for the POST request.
367
- #
368
- # @yield [body]
369
- # If a block is given, it will be passed the body of the page.
370
- #
371
- # @yieldparam [Mechanize::Page] page
372
- # The body of the requested page.
373
- #
374
- # @return [Mechanize::Page]
375
- # The body of the requested page.
376
- #
377
- # @example
378
- # Web.post_body('http://www.rubyinside.com')
379
- # # => String
380
- #
381
- # @example
382
- # Web.post_body('http://www.rubyinside.com') do |body|
383
- # puts body
384
- # end
385
- #
386
- # @see post
387
- #
388
- # @api public
389
- #
390
- def self.post_body(url,query={},headers={})
391
- body = post(url,query,headers).body
392
-
393
- yield body if block_given?
394
- return body
395
- end
35
+ include Support::Web
396
36
  end
397
37
  end
@@ -0,0 +1,92 @@
1
+ .\" Generated by kramdown-man 1.0.1
2
+ .\" https://github.com/postmodern/kramdown-man#readme
3
+ .TH ronin-web-browser 1 "2022-01-01" Ronin Web "User Manuals"
4
+ .SH NAME
5
+ .PP
6
+ ronin\-web\-browser \- Automates a web browser
7
+ .SH SYNOPSIS
8
+ .PP
9
+ \fBronin\-web\-browser\fR \[lB]\fIoptions\fP\[rB] \[lB]\fIURL\fP\[rB]
10
+ .SH DESCRIPTION
11
+ .PP
12
+ Starts an automated web browser\.
13
+ .SH ARGUMENTS
14
+ .TP
15
+ \fIURL\fP
16
+ The initial URL to visit\.
17
+ .SH OPTIONS
18
+ .TP
19
+ \fB\-B\fR, \fB\-\-browser\fR \fINAME\fP\[or]\fIPATH\fP
20
+ The browser name or path to execute\.
21
+ .TP
22
+ \fB\-W\fR, \fB\-\-width\fR \fIWIDTH\fP
23
+ Sets the width of the browser viewport\. Defaults to \fB1024\fR if not given\.
24
+ .TP
25
+ \fB\-H\fR, \fB\-\-height\fR \fIHEIGHT\fP
26
+ Sets the height of the browser viewport\. Defaults to \fB768\fR if not given\.
27
+ .TP
28
+ \fB\-\-headless\fR
29
+ Run the browser in headless mode\.
30
+ .TP
31
+ \fB\-\-visible\fR
32
+ Open a visible browser\.
33
+ .TP
34
+ \fB\-x\fR, \fB\-\-x\fR \fIINT\fP
35
+ Sets the position of the browser window\[cq]s X coordinate\.
36
+ .TP
37
+ \fB\-y\fR, \fB\-\-y\fR \fIINT\fP
38
+ Sets the position of the browser window\[cq]s Y coordinate\.
39
+ .TP
40
+ \fB\-\-inject\-js\fR \fIJS\fP
41
+ Injects the JavaScript code into every page\.
42
+ .TP
43
+ \fB\-\-inject\-js\-file\fR \fIFILE\fP
44
+ Injects the JavaScript file code into every page\.
45
+ .TP
46
+ \fB\-\-bypass\-csp\fR
47
+ Enables bypassing Content\-Security\-Policy (CSP)\.
48
+ .TP
49
+ \fB\-\-print\-urls\fR
50
+ Print every requested URL\.
51
+ .TP
52
+ \fB\-\-print\-status\fR
53
+ Print the status of all requested URLs\.
54
+ .TP
55
+ \fB\-\-print\-requests\fR
56
+ Prints every request sent by the browser\.
57
+ .TP
58
+ \fB\-\-print\-responses\fR
59
+ Prints every response received by the browser\.
60
+ .TP
61
+ \fB\-\-print\-traffic\fR
62
+ Print both requests and responses\.
63
+ .TP
64
+ \fB\-\-print\-headers\fR
65
+ Also print headers of requests and responses\.
66
+ .TP
67
+ \fB\-\-print\-body\fR
68
+ Also print the bodies of the requests and responses\.
69
+ .TP
70
+ \fB\-\-shell\fR
71
+ Starts an interactive shell for the browser\.
72
+ .TP
73
+ \fB\-\-js\-shell\fR
74
+ Starts an interactive JavaScript shell\.
75
+ .TP
76
+ \fB\-h\fR, \fB\-\-help\fR
77
+ Print help information\.
78
+ .SH ENVIRONMENT
79
+ .TP
80
+ \fIHTTP\[ru]PROXY\fP
81
+ Sets the global HTTP proxy\.
82
+ .TP
83
+ \fIRONIN\[ru]HTTP\[ru]PROXY\fP
84
+ Sets the HTTP proxy for Ronin\.
85
+ .SH AUTHOR
86
+ .PP
87
+ Postmodern
88
+ .MT postmodern\.mod3\[at]gmail\.com
89
+ .ME
90
+ .SH SEE ALSO
91
+ .PP
92
+ .BR ronin\-web\-screenshot (1)
@@ -0,0 +1,96 @@
1
+ # ronin-web-browser 1 "2022-01-01" Ronin Web "User Manuals"
2
+
3
+ ## NAME
4
+
5
+ ronin-web-browser - Automates a web browser
6
+
7
+ ## SYNOPSIS
8
+
9
+ `ronin-web-browser` [*options*] [*URL*]
10
+
11
+ ## DESCRIPTION
12
+
13
+ Starts an automated web browser.
14
+
15
+ ## ARGUMENTS
16
+
17
+ *URL*
18
+ : The initial URL to visit.
19
+
20
+ ## OPTIONS
21
+
22
+ `-B`, `--browser` *NAME*\|*PATH*
23
+ : The browser name or path to execute.
24
+
25
+ `-W`, `--width` *WIDTH*
26
+ : Sets the width of the browser viewport. Defaults to `1024` if not given.
27
+
28
+ `-H`, `--height` *HEIGHT*
29
+ : Sets the height of the browser viewport. Defaults to `768` if not given.
30
+
31
+ `--headless`
32
+ : Run the browser in headless mode.
33
+
34
+ `--visible`
35
+ : Open a visible browser.
36
+
37
+ `-x`, `--x` *INT*
38
+ : Sets the position of the browser window's X coordinate.
39
+
40
+ `-y`, `--y` *INT*
41
+ : Sets the position of the browser window's Y coordinate.
42
+
43
+ `--inject-js` *JS*
44
+ : Injects the JavaScript code into every page.
45
+
46
+ `--inject-js-file` *FILE*
47
+ : Injects the JavaScript file code into every page.
48
+
49
+ `--bypass-csp`
50
+ : Enables bypassing Content-Security-Policy (CSP).
51
+
52
+ `--print-urls`
53
+ : Print every requested URL.
54
+
55
+ `--print-status`
56
+ : Print the status of all requested URLs.
57
+
58
+ `--print-requests`
59
+ : Prints every request sent by the browser.
60
+
61
+ `--print-responses`
62
+ : Prints every response received by the browser.
63
+
64
+ `--print-traffic`
65
+ : Print both requests and responses.
66
+
67
+ `--print-headers`
68
+ : Also print headers of requests and responses.
69
+
70
+ `--print-body`
71
+ : Also print the bodies of the requests and responses.
72
+
73
+ `--shell`
74
+ : Starts an interactive shell for the browser.
75
+
76
+ `--js-shell`
77
+ : Starts an interactive JavaScript shell.
78
+
79
+ `-h`, `--help`
80
+ : Print help information.
81
+
82
+ ## ENVIRONMENT
83
+
84
+ *HTTP_PROXY*
85
+ : Sets the global HTTP proxy.
86
+
87
+ *RONIN_HTTP_PROXY*
88
+ : Sets the HTTP proxy for Ronin.
89
+
90
+ ## AUTHOR
91
+
92
+ Postmodern <postmodern.mod3@gmail.com>
93
+
94
+ ## SEE ALSO
95
+
96
+ [ronin-web-screenshot](ronin-web-screenshot.1.md)