Mproxy

c 语言实现的一个最小的http代理,支持翻墙
Alternatives To Mproxy
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Caddy47,5971183346 hours ago85October 26, 202079apache-2.0Go
Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS
Curl30,318737 hours ago30May 11, 202290otherC
A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features
Echo25,7721,6065 days ago165September 04, 202266mitGo
High performance, minimalist Go web framework
Nginxconfig.io25,734
3 days ago44mitJavaScript
⚙️ NGINX config generator on steroids 💉
Nps25,653
3 months ago53October 09, 2021409gpl-3.0Go
一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等……,并带有功能强大的web管理端。a lightweight, high-performance, powerful intranet penetration proxy server, with a powerful web management terminal.
Node Http Proxy13,363398,0652,932a day ago103May 17, 2020579otherJavaScript
A full-featured http proxy for node.js
Got13,074235,7156,4299 days ago162September 19, 202281mitTypeScript
🌐 Human-friendly and powerful HTTP request library for Node.js
Whistle12,5151117a day ago539September 13, 202233mitJavaScript
HTTP, HTTP2, HTTPS, Websocket debugging proxy
Nginx Admins Handbook12,393
2 years ago1mitShell
How to improve NGINX performance, security, and other important things.
Halfrost Field11,971
2 months ago6cc-by-sa-4.0Go
✍🏻 这里是写博客的地方 —— Halfrost-Field 冰霜之地
Alternatives To Mproxy
Select To Compare


Alternative Project Comparisons
Readme

mproxy 使用说明

这是一个微型的http代理服务器实现,使用c语言实现,核心代码量不足500行,不依赖任何第三方的库(只能工作在unixlike系统下面). 其主要功能如下:

  • http代理
  • 支持https隧道
  • 支持简单加密隧道

注:本代码实现简陋,完成仓促,目前还停留在一个原型的阶段,经测试访问facebook,twitter,youtube ,google是OK的,但不保证所有的网站兼容性的问题,希望能够起到一个抛砖引玉的作用。欢迎提交pull request 继续完善. :)

通常情况下存在两种工作模式,普通代理模式和加密隧道模式.

普通代理

这种工作模式和普通的http代理一样,mproxy目前只做简单的http转发,不做任何页面的缓存。

加密隧道(翻墙专用)

这种工作模式需要以client,server的模式进行配合使用,即mproxy分别作为客户端和服务端,并在客户端及服务端形成一个简单的加密隧道,从而躲过GFW的侦测。具体的工作模式如下图所示:

   
   +----------+        +-----------+       +----------+      +----------+
   |          |        |           |       |          |      |          |
   |          |        |           |       |          |      |          |
   |  APP     +------->| mproxy    |+------> mproxy   +------> Web      |
   |          |        |           |       |          |      |          |
   |          |        | client    |       | server   |      |          |
   +----------+        +-----------+       +----------+      +----------+

编译

mproxy可以运行在unix-like 的操作系统下面,程序很小没有第三方的依赖,所以编译很简单,下面的一行命令搞定!

gcc -o mproxy mproxy.c

使用方法

作为普通的代理服务器。

./mproxy -l 8000 -d

这种工作方式对我们来讲意义不大,只做功能展示,重点在下面。

注: "-d" 参数表示程序作为deamon服务,避免终端退出程序结束

作为加密隧道的部署方式(翻墙专用)

有翻墙需求的同学需要使用mproxy分别作为本地代理和远程代理,并且指定两个代理之间传输数据的方式为加密方式。 注:翻墙的话远程代理服务器需要部署在不受GFW管制的国外(找个便宜的VPS即可).

step1 : 在远程服务器启动mproxy作为远程代理

你需要把mproxy源码在远程的服务器编译(直接拷贝二进制应该也可以)然后运行下面的命令。

./mproxy  -l 8081 -D -d

-D 指定接受数据进行解密,其对应参数'-E'应用在本地代理 -d 指定启动作为后台服务,避免终端退出程序结束

step2 : 本地启动 mproxy 作为本地代理,并指定传输方式加密。

在本地启动一个mporxy 并指定目上一步在远程部署的服务器地址和端口号。

./mproxy  -l 8080 -h xxx.xxx.xxx.xxx:8081 -E

-l 指定本地监听端口 -h 指定远端下一跳步的服务器地址及端口号,如果翻墙需要是一台国外的服务器 -E 发送数据的时候进行加密,其对应参数'-D' 应用在远程代理

step3 : 配置浏览器http代理使用mporxy本地代理

设置你的浏览器http代理指向你的本地代理,使用chrome浏览器的同学强烈推荐使用 switchSharp,安装完毕swichSharp以后只需要为switchSharp增加一个情景模式就好,如下图:

设置switchSharp

保存设置以后如果想翻墙的话就切换到你刚才配置的情景模式吧。

使用mproxy

注: mproxy暂不支持windows用户,但是可以和已经部署好的机器共享,只需要在switchSharp中把代理服务器的地址从“localhost"改成已经部署好mproxy的ip即可。

Popular Https Projects
Popular Http Projects
Popular Security Categories

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
C
Http
Twitter
Youtube
Https
Vps
Gfw