All Projects → nathan-alden-sr → proxy

nathan-alden-sr / proxy

Licence: MIT license
An HTTP proxy server written in C# and targeting .NET Core 3.

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to proxy

mps
MPS is a high-performance HTTP(S) proxy library that supports forward proxies, reverse proxies, man-in-the-middle proxies, tunnel proxies, Websocket proxies. MPS 是一个高性能HTTP(s)中间代理库,它支持正向代理、反向代理、中间人代理、隧道代理、Websocket代理
Stars: ✭ 64 (+106.45%)
Mutual labels:  proxy-server, forward-proxy
sparql-proxy
SPARQL-proxy: provides cache, job control, and logging for any SPARQL endpoint
Stars: ✭ 26 (-16.13%)
Mutual labels:  proxy-server
microservice-demo
A cloud-native project management microservice application. Services are built with various technologies e.g Go, NodeJS, Python, Ruby, MongoDB, MySQL, PostgreSQL
Stars: ✭ 143 (+361.29%)
Mutual labels:  proxy-server
Prox5
🧮 SOCKS5/4/4a 🌾 validating proxy pool and upstream SOCKS5 server for 🤽 LOLXDsoRANDum connections 🎋
Stars: ✭ 39 (+25.81%)
Mutual labels:  proxy-server
yastack
YAStack: User-space network-stack based on DPDK, FreeBSD TCP/IP Stack, EnvoyProxy
Stars: ✭ 90 (+190.32%)
Mutual labels:  proxy-server
Free-Proxy
Hi there will be a lot of proxies here.
Stars: ✭ 135 (+335.48%)
Mutual labels:  proxy-server
C-Sharp-Proxy-Server
A proxy server built with c# can be both normal and MITM Proxy
Stars: ✭ 86 (+177.42%)
Mutual labels:  proxy-server
nginx-reverseproxy
A simple implementation of a multidomain nginx reverse proxy, using Node apps.
Stars: ✭ 46 (+48.39%)
Mutual labels:  proxy-server
http-knocking
🚪HTTP-Knocking hides a Web server and open it by knocking sequence: Hide Web server until your knocks
Stars: ✭ 28 (-9.68%)
Mutual labels:  proxy-server
gathertool
gathertool是golang脚本化开发库,目的是提高对应场景程序开发的效率;轻量级爬虫库,接口测试&压力测试库,DB操作库等。
Stars: ✭ 36 (+16.13%)
Mutual labels:  proxy-server
firefox-secure-proxy
Standalone wrapper for Firefox Private Network
Stars: ✭ 15 (-51.61%)
Mutual labels:  proxy-server
RandomProxyRuby
Tiny Library for get random proxy (free).
Stars: ✭ 16 (-48.39%)
Mutual labels:  proxy-server
p3y
A single binary reverse proxy written in go. It was developed for use in Kubernetes, to wrap services like Prometheus with simple BasicAuth and TLS encryption.
Stars: ✭ 15 (-51.61%)
Mutual labels:  proxy-server
Viewfinder
📷 BrowserBox - Remote isolated browser API for security, automation visibility and interactivity. Run on our cloud, or bring your own. Full scope double reverse web proxy with multi-tab, mobile-ready browser UI frontend. Plus co-browsing, advanced adaptive streaming, secure document viewing and more! But only in the Pro version. Get BB today! Se…
Stars: ✭ 1,741 (+5516.13%)
Mutual labels:  proxy-server
microsocks11
A cross-platform SOCKS5 library and server based on the microsocks project.
Stars: ✭ 22 (-29.03%)
Mutual labels:  proxy-server
smtprelay
Simple Golang SMTP relay/proxy server
Stars: ✭ 270 (+770.97%)
Mutual labels:  proxy-server
saml-auth-proxy
Provides a SAML SP authentication proxy for backend web services
Stars: ✭ 38 (+22.58%)
Mutual labels:  proxy-server
socks5-proxy
Socks5 Proxy with Go Lang. support USER_ID/PASSWORD. able to bypass HTTPS(SNI) censorship
Stars: ✭ 29 (-6.45%)
Mutual labels:  proxy-server
ProxyChecker
proxy checker to check the status of the ip-port proxy list
Stars: ✭ 24 (-22.58%)
Mutual labels:  proxy-server
mtproxy
Alpine-based Docker Image for Telegram MTProto Proxy
Stars: ✭ 89 (+187.1%)
Mutual labels:  proxy-server

NathanAlden.Proxy

NathanAlden.Proxy is a proxy server written in C# and .NET Core.

System Requirements

Downloading and Running the Application

  1. Download and extract a release.
  2. Edit the config.yml file included with the release. config.yml includes extensive comments to help make configuration easier.
  3. Run the following command from the CLI: dotnet /path/to/NathanAlden.Proxy.dll.

Features

Compatible with corporate domains, proxies, and restrictive Windows Firewall configurations

Consider the following scenario:

  • A user's runs Windows as their host OS; Windows is connected to a corporate domain
  • Domain policy force-enables Windows Firewall and may even disable the ability to customize the firewall's rules
  • The corporate network forces the use of a corporate proxy to access internet HTTP resources
  • The user runs local virtual machines that are not connected to the corporate domain, but still needs to access internet HTTP resources

Corporate Proxy

Traffic from the user's host OS has no trouble authenticating with the corporate proxy because they are logged in to their domain account. Requests to the proxy from applications that support NTLM authentication (e.g., Google Chrome) can automatically authenticate when the proxy responds with 407 Proxy Authentication Required. However, traffic originating from local VMs not connected to the domain cannot authenticate with NTLM. Depending on corporate proxy configuration, this can result in frequent 407 Proxy Authentication Required responses, some of which may not be actionable, especially from CLI tools that do not support proxy authentication at all (e.g., Git). Proxy settings in the Internet Options control panel do not allow for specifying credentials. CLI tool proxy environment variables only support basic authentication usernames and passwords in clear-text--a security risk. Ideally, local VMs would never receive 407 Proxy Authentication Required responses.

NathanAlden.Proxy can be configured to sit between local VMs and a corporate proxy. NathanAlden.Proxy automatically handles 407 Proxy Authentication Required by responding with basic authentication credentials. Unfortunately, NTLM is not supported at this time due to the complexity of the NTLM handshake; however, many corporate proxies support basic authentication.

Many existing proxies already support forward proxies. Unfortunately, most of them only provide a binary option for binding to a local IP address: 127.0.0.1 and 0.0.0.0. Binding to 0.0.0.0 when Windows Firewall is enabled can trigger Windows Firewall to block the listening socket, thus making it impossible for local VMs to communicate with the local proxy.

Windows Firewall

Since the local proxy only needs to handle traffic between the local VMs and the corporate proxy, it should be bound instead to a network adapter shared by all local VMs--usually, a so-called "host-only" network adapter.

Host-Only

With this configuration, NathanAlden.Proxy is resistant to Windows Firewall settings and automatically handles 407 Proxy Authentication Required responses before they reach the local VMs. Local VMs never need to supply proxy credentials.

Example configuration:

bindings:
  ipAddresses:
  - 192.168.100.1
  port: 3128

forwardProxies:
  http:
    host: proxy.corporatenetwork.com
    port: 80
    authentication:
      basic:
        enabled: true
  https:
    host: proxy.corporatenetwork.com
    port: 80
    authentication:
      basic:
        enabled: true
  noProxyHosts:
  - .corporatenetwork.com

Forward proxy support

As described above, NathanAlden.Proxy supports optional forward proxies for both HTTP and HTTPS connections.

Disallowed hosts

NathanAlden.Proxy can reject incoming requests destined for certain hosts. By default, NathanAlden.Proxy will reject hosts of the proxy itself to prevent endless forwarding loops. IPv4 and IPv6 addresses, CIDR, domain name, and domain name suffix formats are supported.

Example configuration:

disallowedHosts:
- 10.1.2.3
- 10.0.0.0/8
- 2001:0db8:85a3:0000:0000:8a2e:0370:7334
- 2001:db8:/32
- example.com
- .example.com

Socket configuration

Receive and send timeouts can be tweaked. Timeouts are in milliseconds.

Example configuration:

sockets:
  receiveTimeout: 60000
  sendTimeout: 60000
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].