Module: HttpMimic

Extended by:
ModuleMethods
Defined in:
lib/http_mimic.rb,
lib/http_mimic/waf.rb,
lib/http_mimic/client.rb,
lib/http_mimic/cookies.rb,
lib/http_mimic/headers.rb,
lib/http_mimic/request.rb,
lib/http_mimic/version.rb,
lib/http_mimic/response.rb,
lib/http_mimic/downloader.rb,
lib/http_mimic/exceptions.rb,
lib/http_mimic/js_runtime.rb,
lib/http_mimic/cookie_store.rb,
lib/http_mimic/waf/detector.rb,
lib/http_mimic/configuration.rb,
lib/http_mimic/module_methods.rb,
lib/http_mimic/command_builder.rb,
lib/http_mimic/response_parser.rb,
lib/http_mimic/waf/akamai_solver.rb

Defined Under Namespace

Modules: InstanceMethods, ModuleMethods, Waf Classes: BinaryNotFoundError, Client, CommandBuilder, CommandError, Configuration, ConnectionError, CookieStore, Cookies, Downloader, Error, Headers, JSError, JSRuntime, JSTimeoutError, Request, Response, ResponseParseError, ResponseParser, SSLError, TimeoutError

Constant Summary collapse

VERSION =
"0.4.0"

Class Method Summary collapse

Methods included from ModuleMethods

auto_fallback, base_uri, cookies, default_options, default_params, default_timeout, delete, get, head, headers, impersonate, mode, options, patch, persist_cookies, post, proxy, put, request, retry_statuses

Class Method Details

.clear_cookies!(host = nil) ⇒ Object



93
94
95
# File 'lib/http_mimic.rb', line 93

def clear_cookies!(host = nil)
  CookieStore.clear(host)
end

.configurationObject



27
28
29
# File 'lib/http_mimic.rb', line 27

def configuration
  @configuration ||= Configuration.new
end

.configure {|configuration| ... } ⇒ Object

Yields:



31
32
33
# File 'lib/http_mimic.rb', line 31

def configure
  yield(configuration) if block_given?
end

.detect_waf(response) ⇒ Object

Automatically detect WAF type from response



75
76
77
# File 'lib/http_mimic.rb', line 75

def detect_waf(response)
  Waf::Detector.detect(response)
end

.download_driver!(version: nil, force: false) ⇒ Object

Manually download and install curl-impersonate binary driver



40
41
42
# File 'lib/http_mimic.rb', line 40

def download_driver!(version: nil, force: false)
  Downloader.download!(version: version, force: force)
end

.download_qjs!(version: nil, force: false) ⇒ Object

Manually download and install QuickJS binary driver



50
51
52
# File 'lib/http_mimic.rb', line 50

def download_qjs!(version: nil, force: false)
  Downloader.download_qjs!(version: version, force: force)
end

.driver_installed?(version: nil) ⇒ Boolean

Check if curl-impersonate driver is installed locally

Returns:

  • (Boolean)


45
46
47
# File 'lib/http_mimic.rb', line 45

def driver_installed?(version: nil)
  Downloader.installed?(version: version)
end

.eval_js(code, options = {}) ⇒ Object

Evaluate JavaScript code using QuickJS



65
66
67
# File 'lib/http_mimic.rb', line 65

def eval_js(code, options = {})
  JSRuntime.eval(code, timeout: options[:timeout], install_dir: options[:install_dir], auto_download: options[:auto_download])
end

.eval_js_json(code, options = {}) ⇒ Object

Evaluate JavaScript and auto-parse JSON result



70
71
72
# File 'lib/http_mimic.rb', line 70

def eval_js_json(code, options = {})
  JSRuntime.eval_json(code, timeout: options[:timeout], install_dir: options[:install_dir], auto_download: options[:auto_download])
end

.included(base) ⇒ Object



97
98
99
100
# File 'lib/http_mimic.rb', line 97

def included(base)
  base.extend(ModuleMethods)
  base.send(:include, InstanceMethods)
end

.load_cookies(host, max_age: nil) ⇒ Object

Persistent Host CookieStore helpers



85
86
87
# File 'lib/http_mimic.rb', line 85

def load_cookies(host, max_age: nil)
  CookieStore.load(host, max_age: max_age)
end

.qjs_installed?(version: nil) ⇒ Boolean

Check if QuickJS driver is installed locally

Returns:

  • (Boolean)


55
56
57
# File 'lib/http_mimic.rb', line 55

def qjs_installed?(version: nil)
  Downloader.qjs_installed?(version: version)
end

.qjs_pathObject

Return local path to QuickJS binary



60
61
62
# File 'lib/http_mimic.rb', line 60

def qjs_path
  Downloader.qjs_path
end

.reset_configuration!Object



35
36
37
# File 'lib/http_mimic.rb', line 35

def reset_configuration!
  @configuration = Configuration.new
end

.save_cookies(host, cookies, ttl: nil) ⇒ Object



89
90
91
# File 'lib/http_mimic.rb', line 89

def save_cookies(host, cookies, ttl: nil)
  CookieStore.save(host, cookies, ttl: ttl || CookieStore::DEFAULT_TTL)
end

.solve_waf(url, response, options = {}) ⇒ Object

Attempt to solve WAF challenge for a blocked response



80
81
82
# File 'lib/http_mimic.rb', line 80

def solve_waf(url, response, options = {})
  Waf.solve(url, response, options)
end