API¶
Class ExploitBuilder¶
selenium_oxide.exploit_builder.ExploitBuilder
The ExploitBuilder, the bread and butter of Selenium Oxide.
ExploitBuilder(protocol, hostname, **options)
- Parameters:
protocol (str): The protocol to use (either “http” or “https” in most cases)
hostname (str): The hostname of the application to access
**options
- Options:
stealth (bool): Whether or not to engage stealth mode (Default: False)
browser (str): Which browser to use (“firefox” or “chrome”, default: “firefox”)
use_proxy (bool): Whether or not to use a proxy (Default: False)
proxy_address (str): Which proxy address to use (Default: “127.0.0.1:8080”)
Methods¶
Methods for selenium_oxide.exploit_builder.ExploitBuilder
api¶
api(self, req_method: Callable, endpoint: str, api_protocol: str = None, api_hostname: str = None, **kwargs)
Wrapper for Python’s Requests library, enabling automatic proxy usage and cookie sharing when interfacing with APIs. kwargs supports same options as Requests.
- Parameters:
req_method (Callable): requests function to use (requests.get, requests.posts, etc.)
endpoint (str): the API endpoint to request
api_protocol (str): the protocol to use for the API. Effectively defaults to the same protocol used in the ExploitBuilder
api_hostname (str): the hostname to use for the API. Effectively defaults to the same hostname used in the ExploitBuilder
**kwargs: interoperable with Python Requests (e.g. headers parameter will be passed into the requests call)
Returns: requests.Response
api_get¶
api_get(self, endpoint: str, api_protocol: str = None, api_hostname: str = None, **kwargs)
Wrapper for ExploitBuilder.api(requests.get, …).
- Parameters:
endpoint (str): the API endpoint to request
api_protocol (str): the protocol to use for the API. Effectively defaults to the same protocol used in the ExploitBuilder
api_hostname (str): the hostname to use for the API. Effectively defaults to the same hostname used in the ExploitBuilder
**kwargs: interoperable with Python Requests (e.g. headers parameter will be passed into the requests call)
Returns: requests.Response
api_post¶
api_post(self, endpoint: str, api_protocol: str = None, api_hostname: str = None, **kwargs)
Wrapper for ExploitBuilder.api(requests.post, …).
- Parameters:
endpoint (str): the API endpoint to request
api_protocol (str): the protocol to use for the API. Effectively defaults to the same protocol used in the ExploitBuilder
api_hostname (str): the hostname to use for the API. Effectively defaults to the same hostname used in the ExploitBuilder
**kwargs: interoperable with Python Requests (e.g. headers parameter will be passed into the requests call)
Returns: requests.Response
api_put¶
api_put(self, endpoint: str, api_protocol: str = None, api_hostname: str = None, **kwargs)
Wrapper for ExploitBuilder.api(requests.put, …).
- Parameters:
endpoint (str): the API endpoint to request
api_protocol (str): the protocol to use for the API. Effectively defaults to the same protocol used in the ExploitBuilder
api_hostname (str): the hostname to use for the API. Effectively defaults to the same hostname used in the ExploitBuilder
**kwargs: interoperable with Python Requests (e.g. headers parameter will be passed into the requests call)
Returns: requests.Response
api_delete¶
api_delete(self, endpoint: str, api_protocol: str = None, api_hostname: str = None, **kwargs)
Wrapper for ExploitBuilder.api(requests.delete, …).
- Parameters:
endpoint (str): the API endpoint to request
api_protocol (str): the protocol to use for the API. Effectively defaults to the same protocol used in the ExploitBuilder
api_hostname (str): the hostname to use for the API. Effectively defaults to the same hostname used in the ExploitBuilder
**kwargs: interoperable with Python Requests (e.g. headers parameter will be passed into the requests call)
Returns: requests.Response
click¶
click(self, button: str, by: SelectBy = SelectBy.XPATH)
Clicks an element.
- Parameters:
button (str): The selector for the element to click
by (SelectBy): The selector type to use (default: SelectBy.XPATH)
Returns:
exploit_builder.ExploitBuilder
click_by_class¶
click_by_class(self, button_class: str)
Clicks an element based on CSS class name.
- Parameters:
button_class (str): The element class name
Returns:
exploit_builder.ExploitBuilder
click_by_id¶
click_by_id(self, button_id: str)
Clicks an element based on HTML ID.
- Parameters:
button_id (str): The element HTML ID
Returns:
exploit_builder.ExploitBuilder
click_by_xpath¶
click_by_xpath(self, xpath: str)
Clicks an element based on XPath.
- Parameters:
xpath (str): The element XPath
Returns:
exploit_builder.ExploitBuilder
execute_script¶
execute_script(self, script, *args)
Wrapper for Selenium’s webdriver.execute_script().
- Parameters:
script (str): The JavaScript to execute
Returns: Any: the return value of the JavaScript
get¶
get(self, endpoint: str)
Makes a GET request to the specified endpoint in the browser.
- Parameters:
endpoint (str): The endpoint to which the browser navigates
Returns:
exploit_builder.ExploitBuilder
get_contents¶
get_contents(self, field: str, by: SelectBy = SelectBy.XPATH)
Get the contents of a specified field.
- Parameters:
field (str): The selector to extract text from
by (SelectBy): The type of selector to use (default: SelectBy.XPATH)
Returns: str: The text in the given field
get_contents_by_id¶
get_contents_by_id(self, field: str)
Get the contents of a specified field, based on the HTML ID
- Parameters:
field (str): The HTML ID to extract text from
Returns: str: The text in the given field
get_contents_by_class¶
get_contents_by_class(self, field: str)
Get the contents of a specified field, based on the CSS class name
- Parameters:
field (str): The CSS class name to extract text from
Returns: str: The text in the given field
get_contents_by_xpath¶
get_contents_by_xpath(self, xpath: str)
Get the contents of a specified field, based on the XPath
- Parameters:
xpath (str): The XPath to extract text from
Returns: str: The text in the given field
login¶
login(self, endpoint: str, username: str, password: str, username_xpath: str, password_xpath: str, submit_xpath: str)
Performs a full login process for a given endpoint. Convenience function.
- Parameters:
endpoint (str): The location of the login page
username (str): The username to use
password (str): The password to use
username_xpath (str): The XPath of the username field
password_xpath (str): The XPath of the password field
submit_xpath (str): The XPath of the submit button
Returns:
exploit_builder.ExploitBuilder
send_enter¶
send_enter(self, field: str, by: SelectBy = SelectBy.XPATH)
Simulates sending the enter key to a particular element.
- Parameters:
field (str): The selector of the field
by (SelectBy): The selector type to use (default: SelectBy.XPATH)
Returns:
exploit_builder.ExploitBuilder
send_enter_by_class¶
send_enter_by_class(self, field: str)
Simulates sending the enter key to a particular element selected by CSS class name.
- Parameters:
field (str): The CSS Class name of the field to send enter in
Returns:
exploit_builder.ExploitBuilder
send_enter_by_id¶
send_enter_by_id(self, field: str)
Simulates sending the enter key to a particular element selected by HTML ID.
- Parameters:
field (str): The HTML ID of the field to send enter in
Returns:
exploit_builder.ExploitBuilder
send_enter_by_xpath¶
send_enter_by_xpath(self, xpath: str)
Simulates sending the enter key to a particular element selected by XPath.
- Parameters:
field (str): The XPath of the field to send enter in
Returns:
exploit_builder.ExploitBuilder
type_entry¶
type_entry(self, field: str, entry: str, by: SelectBy = SelectBy.XPATH)
Send text to a particular field.
- Parameters:
field (str): The selector of the field
entry (str): The text to enter into the field
by (SelectBy): The selector type to use (default: SelectBy.XPATH)
Returns:
exploit_builder.ExploitBuilder
type_by_class¶
type_by_class(self, field: str, entry: str)
Send text to a particular field selected by CSS class name.
- Parameters:
field (str): The CSS class name of the field
entry (str): The text to enter into the field
Returns:
exploit_builder.ExploitBuilder
type_by_id¶
type_by_id(self, field: str, entry: str)
Send text to a particular field selected by HTML ID.
- Parameters:
field (str): The HTML ID of the field
entry (str): The text to enter into the field
Returns:
exploit_builder.ExploitBuilder
type_by_xpath¶
type_by_xpath(self, field: str, entry: str)
Send text to a particular field selected by XPath.
- Parameters:
field (str): The XPath of the field
entry (str): The text to enter into the field
Returns:
exploit_builder.ExploitBuilder
wait_for_alert¶
wait_for_stealth(self, entry: str = "")
Waits for an alert to fire, looking for an optional marker.
- Parameters:
timeout (int): The amount of time to wait for an alert
marker (Optional[str]): A known marker, used to detect XSS attacks
Returns: bool: whether or not the alert fired
wait_for_stealth¶
wait_for_alert(self, timeout: int = 3, marker: Optional[str] = None)
Waits for a period of time based on the length of the entry.
- Parameters:
entry (str): The entry to scale by
Returns:
exploit_builder.ExploitBuilder
Class SelectBy¶
selenium_oxide.exploit_builder.SelectBy
A wrapper for Selenium’s By enum. Literally only changes the name to avoid confusion with Selenium.
Class SeO2User¶
selenium_oxide.user_generator.SeO2User
Generates an individual user for use with Selenium Oxide. Uses Faker.
SeO2User(self, gen: Faker = None, locale: str = "en_US", **data)
- Parameters:
gen (faker.Faker): a Faker generator to use for the user. Defaults to an individually made generator.
locale (str): a locale to use for Faker. Defaults to “en_US”.
**data
All provided data is optional and overrides Faker profile generation.
- Data:
name (str): The user’s name
sex (str): The user’s sex (usually “M” or “F”) determines name gender in lieu of a provided name. Feel free to put “X” for a nonbinary name
username (str): The user’s username
email (str): The user’s email
address (str): The user’s address
birthdate (datetime.date): The user’s date of birth
Methods¶
Methods for selenium_oxide.user_generator.SeO2User
get_generator¶
get_generator(self)
Getter method for the user’s generator.
Returns:
faker.Faker