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.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +3 -2
- data/.gitignore +1 -0
- data/.rubocop.yml +5 -0
- data/ChangeLog.md +46 -1
- data/Gemfile +25 -12
- data/README.md +257 -51
- data/Rakefile +9 -0
- data/data/completions/ronin-web +203 -0
- data/gemspec.yml +18 -5
- data/lib/ronin/web/cli/browser_options.rb +92 -0
- data/lib/ronin/web/cli/browser_shell.rb +448 -0
- data/lib/ronin/web/cli/command.rb +1 -1
- data/lib/ronin/web/cli/commands/browser.rb +373 -0
- data/lib/ronin/web/cli/commands/completion.rb +63 -0
- data/lib/ronin/web/cli/commands/diff.rb +60 -8
- data/lib/ronin/web/cli/commands/html.rb +21 -33
- data/lib/ronin/web/cli/commands/irb.rb +1 -1
- data/lib/ronin/web/cli/commands/new/{webapp.rb → app.rb} +8 -8
- data/lib/ronin/web/cli/commands/new/nokogiri.rb +4 -4
- data/lib/ronin/web/cli/commands/new/server.rb +1 -1
- data/lib/ronin/web/cli/commands/new/spider.rb +1 -1
- data/lib/ronin/web/cli/commands/new.rb +5 -3
- data/lib/ronin/web/cli/commands/reverse_proxy.rb +1 -1
- data/lib/ronin/web/cli/commands/screenshot.rb +186 -0
- data/lib/ronin/web/cli/commands/server.rb +1 -1
- data/lib/ronin/web/cli/commands/session_cookie.rb +265 -0
- data/lib/ronin/web/cli/commands/spider.rb +61 -467
- data/lib/ronin/web/cli/commands/user_agent.rb +177 -0
- data/lib/ronin/web/cli/commands/vulns.rb +463 -0
- data/lib/ronin/web/cli/commands/wordlist.rb +484 -0
- data/lib/ronin/web/cli/commands/xml.rb +149 -0
- data/lib/ronin/web/cli/js_shell.rb +69 -0
- data/lib/ronin/web/cli/ruby_shell.rb +1 -1
- data/lib/ronin/web/cli/spider_options.rb +919 -0
- data/lib/ronin/web/cli.rb +3 -1
- data/lib/ronin/web/html.rb +1 -1
- data/lib/ronin/web/root.rb +1 -1
- data/lib/ronin/web/version.rb +2 -2
- data/lib/ronin/web/xml.rb +1 -1
- data/lib/ronin/web.rb +4 -364
- data/man/ronin-web-browser.1 +92 -0
- data/man/ronin-web-browser.1.md +96 -0
- data/man/ronin-web-completion.1 +76 -0
- data/man/ronin-web-completion.1.md +78 -0
- data/man/ronin-web-diff.1 +14 -21
- data/man/ronin-web-diff.1.md +13 -6
- data/man/ronin-web-html.1 +30 -46
- data/man/ronin-web-html.1.md +27 -17
- data/man/ronin-web-irb.1 +9 -16
- data/man/ronin-web-irb.1.md +6 -2
- data/man/ronin-web-new-app.1.md +39 -0
- data/man/ronin-web-new-nokogiri.1 +9 -20
- data/man/ronin-web-new-nokogiri.1.md +5 -5
- data/man/ronin-web-new-server.1 +11 -23
- data/man/ronin-web-new-server.1.md +5 -5
- data/man/ronin-web-new-spider.1 +44 -88
- data/man/ronin-web-new-spider.1.md +37 -37
- data/man/ronin-web-new.1 +18 -30
- data/man/ronin-web-new.1.md +15 -11
- data/man/ronin-web-reverse-proxy.1 +33 -38
- data/man/ronin-web-reverse-proxy.1.md +20 -14
- data/man/ronin-web-screenshot.1 +56 -0
- data/man/ronin-web-screenshot.1.md +56 -0
- data/man/ronin-web-server.1 +15 -29
- data/man/ronin-web-server.1.md +13 -9
- data/man/ronin-web-session-cookie.1 +38 -0
- data/man/ronin-web-session-cookie.1.md +41 -0
- data/man/ronin-web-spider.1 +121 -130
- data/man/ronin-web-spider.1.md +115 -66
- data/man/ronin-web-user-agent.1 +44 -0
- data/man/ronin-web-user-agent.1.md +46 -0
- data/man/ronin-web-vulns.1 +175 -0
- data/man/ronin-web-vulns.1.md +177 -0
- data/man/ronin-web-wordlist.1 +258 -0
- data/man/ronin-web-wordlist.1.md +263 -0
- data/man/ronin-web-xml.1 +43 -0
- data/man/ronin-web-xml.1.md +46 -0
- data/man/ronin-web.1 +67 -18
- data/man/ronin-web.1.md +55 -4
- data/scripts/setup +58 -0
- metadata +122 -31
- data/lib/ronin/web/mechanize.rb +0 -84
- data/man/ronin-web-new-webapp.1.md +0 -39
- /data/data/new/{webapp → app}/.gitignore +0 -0
- /data/data/new/{webapp → app}/.ruby-version.erb +0 -0
- /data/data/new/{webapp → app}/Dockerfile.erb +0 -0
- /data/data/new/{webapp → app}/Gemfile +0 -0
- /data/data/new/{webapp → app}/app.rb.erb +0 -0
- /data/data/new/{webapp → app}/config.ru +0 -0
- /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-
|
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
|
data/lib/ronin/web/html.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-
|
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/root.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-
|
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/version.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-
|
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 = '
|
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-
|
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-
|
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
|
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
|
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)
|