# Railgun Core Documentation

Railgun is a Node.js library designed with the goal of making it easy for web application security
researchers to analyze applications and discover & exploit vulnerabilities.

The documentation herein describes the public (user-facing) functionality aailable in Railgun.

## Getting Started

If you are just getting started with Railgun, you should probably start by reading the documentation
and examples for the [Proxy Server](), which will get you started in understanding most of the core
features available.

## Contents

### railgun.ProxyServer

[Railgun's proxy server]() is the core tool used to intercept and modify requests and responses
from the browser while you inspect an application.

### railgun.Sequencer

[The Railgun Sequencer]() is used to automate sending a large quantity of requests based on a
list of data to use in each test.

### railgun.Spider

[Railgun's Spider]() provides core functionality for crawling a site and building a detailed record
of all of the requests made. Its search functionality is extremely customizable.

### railgun.Request

[Request Builders]() are a the core type containing request data to be
manipulated by proxy and spider middleware, etc. It also includes middleware functions and a
`send` function to issue requests.

### railgun.responses

[Response Builders]() are a core class that, like the `requests.Builder`, contains
data for a response and methods for modifying it. It is the type produced when the proxy receives
a response.

### railgun.scope

[The scope module]() contains the Scope class, which can be used to define rules that define which
kinds of resources on the web are of interest to you and have the proxy or spider filter those
that are not relevant to us.

### railgun.parsers

[The parsers module]() contains functions for extracting potentially interesting information from
HTML, CSS, and Javascript documents, such as comments and hidden input fields.

### railgun.records

[The records module]() contains the Record class, which is a tree data structure used to represent
information about requests made, particularly while spidering. It includes methods to persist
Record structures to and from JSON files.

### railgun.templates

[The templates module]() uses the incredible [Mustache](https://github.com/janl/mustache.js/)
templating library to provide functions that allow us to write template strings in parts of
request and response builders, and then have those templates be filled with arbitrary data.
