Metadata-Version: 2.1
Name: makiproxy5
Version: 0.0.1
Summary: A socks 5 proxy server written in Python, class based.
Home-page: https://github.com/makiisthenes/Proxy5Server
Author: Michael Peres
Author-email: michaelperes1@gmail.com
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)
Classifier: Operating System :: OS Independent
Classifier: Natural Language :: English
Classifier: Topic :: Internet
Classifier: Topic :: Internet :: Proxy Servers
Description-Content-Type: text/markdown
Requires-Dist: certifi (==2022.6.15)
Requires-Dist: idna (==3.3)
Requires-Dist: netifaces (==0.11.0)
Requires-Dist: requests (==2.28.1)
Requires-Dist: urllib3 (==1.26.10)

## Python Socks5 Proxy Server
### Allows users to run a Proxy5 server on thier own local computer, implemented using sockets.

----

#### Installation
Running the following to install: 
```python
pip install makiproxy5
```

----
#### Usage
```python
if __name__ == "__main__":
	ps = ProxyServer(host=None, port=10696, username=None, password=None, max_clients=3, secure=True)
	ps.run()
```

- ***host*** : This is the current local IP of the devices, this will be automatically so can be left blank.
- ***port*** : State the local port you want to clients to use when connecting to the proxy server.
- ***username*** : Set allowed username that can access the proxy server during authentication.
- ***password*** : Corresponding password required for username during authentication.
- ***max_client*** : Allow a maximum of x concurrent connections to the proxy server. 
- ***secure*** : Disables no authentication method, so all users must provide username/pass to connect.

----

#### Example
Example usage for initializing proxy server.
```python
ProxyServer(username="maki", password="password", port=10696, secure=True).run()
```

----

#### Client Connection Options:
There are many ways to use this server, I will mention a few for aid.

- **On Firefox (PC)**:
	Using extension Proxy Toggle, 
	https://addons.mozilla.org/en-GB/firefox/addon/proxy-toggle/
	Any extension where Proxy5 is accepted and allows the username/password authentication method.


- **On iOS (Mobile)**:
	Using this app, although cost Â£2-3 its the best option I have found.
	https://apps.apple.com/gb/app/shadowrocket/id932747118
	There may be other options available on Andriod for free.


----

#### Journey and Motivation

I wanted to watch UK TV shows that weren't available while abroad so decided to make a proxy server running on a raspberry pi so that I could watch free of charge and effortlessly.

Of course I could of just bought a monthly subscription to a VPN service or a proxy for a month, but what's the fun in that? I wanted to challenge myself, learn more about things I depend on instead of just using it.

I started my journey by looking at RFC for proxy5 protocol, and inspecting wireshark for proxy server running in practical way, so I could implement it myself.


[![Inspecting using Wireshark.](https://i.imgur.com/iE0Jmkb.png "Inspecting using Wireshark.")](https://i.imgur.com/iE0Jmkb.png "Inspecting using Wireshark.")


----
> Michael Peres 22/07/2022

> #### End

