mallory 0.0.1
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 +7 -0
- data/.gitignore +8 -0
- data/Gemfile +3 -0
- data/README.md +46 -0
- data/lib/mallory.rb +1 -0
- data/lib/mallory/version.rb +5 -0
- data/mallory.gemspec +27 -0
- metadata +137 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 87eb6511a86298565a32bb4f9a6200773d39fe9e
|
4
|
+
data.tar.gz: dec4a02af3306a9f348d38fa656b448a06a9c92c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c54f259b962ff224ab1031d698c892c94fca926f2249905bb14f463c170ba4ebd5ed17c74a8e6c92ae36aca1e12c8fc70176b3c95b3adbc101f8b685c71e53b0
|
7
|
+
data.tar.gz: 8cbfc1e0028fecf96dffc919f70230bc8c0fe97e4b4f5b874122632be0ad8d5704a421a6efcd306881744855558b562b92c35eedbbda6ca4195aa96b90c5b300
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
## mallory
|
2
|
+
|
3
|
+
Man-in-the-middle http/https transparent http (CONNECT) proxy over bunch of (unreliable) backends.
|
4
|
+
It is intended to be used for running test suits / scrapers. It basically shields the proxied application from low responsiveness / poor reliability of underlying proxies.
|
5
|
+
|
6
|
+
Proxy list is provided by external backend (ActiveRecord model, Redis set) and is refreshed periodically. Original use case involves separate proxy-gathering daemon (out of the scope of this project).
|
7
|
+
|
8
|
+
For the mallory to work properly client certificate validation needs to be turned off.
|
9
|
+
|
10
|
+
### Example usage
|
11
|
+
|
12
|
+
```bash
|
13
|
+
./keys/keygen.sh
|
14
|
+
bundle exec ./bin/mallory -v -l 9999
|
15
|
+
```
|
16
|
+
|
17
|
+
```bash
|
18
|
+
curl --insecure --proxy 127.0.0.1:9999 https://www.dropbox.com/login
|
19
|
+
phantomjs --debug=yes --ignore-ssl-errors=yes --ssl-protocol=sslv2 --proxy=127.0.0.1:9999 --proxy-type=http hello.js
|
20
|
+
```
|
21
|
+
|
22
|
+
### What mallory is not
|
23
|
+
- General purpose proxying daemon
|
24
|
+
- General purpose proxy load balancer
|
25
|
+
- Anything general purpose really
|
26
|
+
- For mature general purpose mitm solution (in Python) see [mallory](https://github.com/mallory/mallory)
|
27
|
+
|
28
|
+
### TODO
|
29
|
+
- CA support
|
30
|
+
- SOCKS5 backends (mixing http and SOCKS5 proxies)
|
31
|
+
- parallel requests
|
32
|
+
- even better response reliability
|
33
|
+
|
34
|
+
### Resources
|
35
|
+
|
36
|
+
- [HTTP Connect Tunneling](http://en.wikipedia.org/wiki/HTTP_tunnel#HTTP_CONNECT_Tunneling)
|
37
|
+
- [RFC2817, Upgrading to TLS Within HTTP/1.1](http://www.ietf.org/rfc/rfc2817.txt)
|
38
|
+
|
39
|
+
### Contributors
|
40
|
+
|
41
|
+
- [Marcin Sawicki](https://github.com/odcinek)
|
42
|
+
- [Maria Kacik](https://github.com/mkacik)
|
43
|
+
|
44
|
+
### License
|
45
|
+
|
46
|
+
(The MIT License)
|
data/lib/mallory.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'mallory/version'
|
data/mallory.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "mallory/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "mallory"
|
7
|
+
s.version = EventMachine::Mallory::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Marcin Sawicki"]
|
10
|
+
s.email = ["odcinek@gmail.com"]
|
11
|
+
s.homepage = "http://github.com/odcinek/mallory"
|
12
|
+
s.summary = "Man-in-the-middle http/https transparent http (CONNECT) proxy over bunch of (unreliable) backends"
|
13
|
+
s.description = s.summary
|
14
|
+
s.license = "MIT"
|
15
|
+
|
16
|
+
s.add_dependency "eventmachine", "1.0.3"
|
17
|
+
s.add_dependency "redis"
|
18
|
+
s.add_dependency "em-http-request"
|
19
|
+
s.add_development_dependency "rspec"
|
20
|
+
s.add_development_dependency "sinatra"
|
21
|
+
s.add_development_dependency "rake"
|
22
|
+
|
23
|
+
s.files = `git ls-files`.split("\n")
|
24
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
25
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
26
|
+
s.require_paths = ["lib"]
|
27
|
+
end
|
metadata
ADDED
@@ -0,0 +1,137 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mallory
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Marcin Sawicki
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-09-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: eventmachine
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.0.3
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.0.3
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: redis
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: em-http-request
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: sinatra
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rake
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
description: Man-in-the-middle http/https transparent http (CONNECT) proxy over bunch
|
98
|
+
of (unreliable) backends
|
99
|
+
email:
|
100
|
+
- odcinek@gmail.com
|
101
|
+
executables: []
|
102
|
+
extensions: []
|
103
|
+
extra_rdoc_files: []
|
104
|
+
files:
|
105
|
+
- .gitignore
|
106
|
+
- Gemfile
|
107
|
+
- README.md
|
108
|
+
- lib/mallory.rb
|
109
|
+
- lib/mallory/version.rb
|
110
|
+
- mallory.gemspec
|
111
|
+
homepage: http://github.com/odcinek/mallory
|
112
|
+
licenses:
|
113
|
+
- MIT
|
114
|
+
metadata: {}
|
115
|
+
post_install_message:
|
116
|
+
rdoc_options: []
|
117
|
+
require_paths:
|
118
|
+
- lib
|
119
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - '>='
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
|
+
requirements:
|
126
|
+
- - '>='
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '0'
|
129
|
+
requirements: []
|
130
|
+
rubyforge_project:
|
131
|
+
rubygems_version: 2.0.2
|
132
|
+
signing_key:
|
133
|
+
specification_version: 4
|
134
|
+
summary: Man-in-the-middle http/https transparent http (CONNECT) proxy over bunch
|
135
|
+
of (unreliable) backends
|
136
|
+
test_files: []
|
137
|
+
has_rdoc:
|