ronin-web 1.0.2 → 2.0.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) 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/ChangeLog.md +46 -1
  6. data/Gemfile +25 -12
  7. data/README.md +257 -51
  8. data/Rakefile +9 -0
  9. data/data/completions/ronin-web +203 -0
  10. data/gemspec.yml +18 -5
  11. data/lib/ronin/web/cli/browser_options.rb +92 -0
  12. data/lib/ronin/web/cli/browser_shell.rb +448 -0
  13. data/lib/ronin/web/cli/command.rb +1 -1
  14. data/lib/ronin/web/cli/commands/browser.rb +373 -0
  15. data/lib/ronin/web/cli/commands/completion.rb +63 -0
  16. data/lib/ronin/web/cli/commands/diff.rb +60 -8
  17. data/lib/ronin/web/cli/commands/html.rb +21 -33
  18. data/lib/ronin/web/cli/commands/irb.rb +1 -1
  19. data/lib/ronin/web/cli/commands/new/{webapp.rb → app.rb} +8 -8
  20. data/lib/ronin/web/cli/commands/new/nokogiri.rb +4 -4
  21. data/lib/ronin/web/cli/commands/new/server.rb +1 -1
  22. data/lib/ronin/web/cli/commands/new/spider.rb +1 -1
  23. data/lib/ronin/web/cli/commands/new.rb +5 -3
  24. data/lib/ronin/web/cli/commands/reverse_proxy.rb +1 -1
  25. data/lib/ronin/web/cli/commands/screenshot.rb +186 -0
  26. data/lib/ronin/web/cli/commands/server.rb +1 -1
  27. data/lib/ronin/web/cli/commands/session_cookie.rb +265 -0
  28. data/lib/ronin/web/cli/commands/spider.rb +61 -467
  29. data/lib/ronin/web/cli/commands/user_agent.rb +177 -0
  30. data/lib/ronin/web/cli/commands/vulns.rb +463 -0
  31. data/lib/ronin/web/cli/commands/wordlist.rb +484 -0
  32. data/lib/ronin/web/cli/commands/xml.rb +149 -0
  33. data/lib/ronin/web/cli/js_shell.rb +69 -0
  34. data/lib/ronin/web/cli/ruby_shell.rb +1 -1
  35. data/lib/ronin/web/cli/spider_options.rb +919 -0
  36. data/lib/ronin/web/cli.rb +3 -1
  37. data/lib/ronin/web/html.rb +1 -1
  38. data/lib/ronin/web/root.rb +1 -1
  39. data/lib/ronin/web/version.rb +2 -2
  40. data/lib/ronin/web/xml.rb +1 -1
  41. data/lib/ronin/web.rb +4 -364
  42. data/man/ronin-web-browser.1 +92 -0
  43. data/man/ronin-web-browser.1.md +96 -0
  44. data/man/ronin-web-completion.1 +76 -0
  45. data/man/ronin-web-completion.1.md +78 -0
  46. data/man/ronin-web-diff.1 +14 -21
  47. data/man/ronin-web-diff.1.md +13 -6
  48. data/man/ronin-web-html.1 +30 -46
  49. data/man/ronin-web-html.1.md +27 -17
  50. data/man/ronin-web-irb.1 +9 -16
  51. data/man/ronin-web-irb.1.md +6 -2
  52. data/man/ronin-web-new-app.1.md +39 -0
  53. data/man/ronin-web-new-nokogiri.1 +9 -20
  54. data/man/ronin-web-new-nokogiri.1.md +5 -5
  55. data/man/ronin-web-new-server.1 +11 -23
  56. data/man/ronin-web-new-server.1.md +5 -5
  57. data/man/ronin-web-new-spider.1 +44 -88
  58. data/man/ronin-web-new-spider.1.md +37 -37
  59. data/man/ronin-web-new.1 +18 -30
  60. data/man/ronin-web-new.1.md +15 -11
  61. data/man/ronin-web-reverse-proxy.1 +33 -38
  62. data/man/ronin-web-reverse-proxy.1.md +20 -14
  63. data/man/ronin-web-screenshot.1 +56 -0
  64. data/man/ronin-web-screenshot.1.md +56 -0
  65. data/man/ronin-web-server.1 +15 -29
  66. data/man/ronin-web-server.1.md +13 -9
  67. data/man/ronin-web-session-cookie.1 +38 -0
  68. data/man/ronin-web-session-cookie.1.md +41 -0
  69. data/man/ronin-web-spider.1 +121 -130
  70. data/man/ronin-web-spider.1.md +115 -66
  71. data/man/ronin-web-user-agent.1 +44 -0
  72. data/man/ronin-web-user-agent.1.md +46 -0
  73. data/man/ronin-web-vulns.1 +175 -0
  74. data/man/ronin-web-vulns.1.md +177 -0
  75. data/man/ronin-web-wordlist.1 +258 -0
  76. data/man/ronin-web-wordlist.1.md +263 -0
  77. data/man/ronin-web-xml.1 +43 -0
  78. data/man/ronin-web-xml.1.md +46 -0
  79. data/man/ronin-web.1 +67 -18
  80. data/man/ronin-web.1.md +55 -4
  81. data/scripts/setup +58 -0
  82. metadata +122 -31
  83. data/lib/ronin/web/mechanize.rb +0 -84
  84. data/man/ronin-web-new-webapp.1.md +0 -39
  85. /data/data/new/{webapp → app}/.gitignore +0 -0
  86. /data/data/new/{webapp → app}/.ruby-version.erb +0 -0
  87. /data/data/new/{webapp → app}/Dockerfile.erb +0 -0
  88. /data/data/new/{webapp → app}/Gemfile +0 -0
  89. /data/data/new/{webapp → app}/app.rb.erb +0 -0
  90. /data/data/new/{webapp → app}/config.ru +0 -0
  91. /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.rc1'
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)