Run by the evaluator, tries to make a GET request to a given server

class plugins.http.client.HTTPClient(args)

Bases: plugins.plugin_client.ClientPlugin

Defines the HTTP client.


Initializes the HTTP client.

static get_args(command)

Defines required args for this plugin

run(args, logger, engine=None)

Try to make a forbidden GET request to the server.

name = 'http'
class plugins.http.server.HTTPServer(args)

Bases: plugins.plugin_server.ServerPlugin

Defines the HTTP client.


Initializes the HTTP client.

static get_args(command)

Defines arguments for this plugin

run(args, logger)

Initializes the HTTP server.


Stops this server.

name = 'http'

HTTP Plugin driver

Overrides the default evaluator plugin handling so we can negotiate a clear port and track jailed sites to avoid residual censorship.

class plugins.http.plugin.HTTPPluginRunner(args)

Bases: plugins.plugin.Plugin

Defines the HTTP plugin runner.


Marks this plugin as enabled

static get_args(command)

Defines required global args for all plugins

negotiate_clear_port(args, evaluator, environment, logger)

Since residual censorship might be affecting our IP/port combo that was randomly chosen, this method is to find a port on which no residual censorship is present. This is done simply by picking a port, running the server, running curl to confirm it’s accessible, and then returning that port.

start(args, evaluator, environment, ind, logger)

Runs the plugins

name = 'http'
class plugins.http.plugin.TestServer(requested_site, evaluator, environment, logger)

Bases: object

Context manager to retrieve a test server from the external server pool.

__init__(requested_site, evaluator, environment, logger)

Initialize self. See help(type(self)) for accurate signature.

plugins.http.plugin.check_censorship(site, evaluator, environment, logger)

Make a request to the given site to test if it is censored. Used to test a site for residual censorship before using it.