• Stars
    star
    271
  • Rank 151,717 (Top 3 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created about 6 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

http代理,支持CONNECT和普通GET/POST,支持http2;可防止主动嗅探;可作为小火箭、圈、surge等软件和SwitchyOmega(chrome插件)所说的https代理

声明:本项目仅以学习为目的,请在当地法律允许的范围内使用本程序。任何因错误用途导致的法律责任,与本项目无关!

基于netty的http代理

  • 支持普通GET/POST和CONNECT隧道代理
  • 代理支持over TLS(也就是surge、小火箭等软件说的https proxy)
  • 防止主动嗅探是否为http代理
  • 使用openssl、epoll等技术,支持TLS v1.3。

支持的客户端

平台 支持的客户端
Linux、Windows clash_for_windowsgo语言客户端Java语言客户端
MacOS ClashX、ClashX Pro
IOS Surgeshawdowrocket
Android ClashForAndroid
chrome SwitchyOmega插件(不推荐,会存在被嗅探的风险)

网速监控

  1. http(s)://host:port/net提供了基于echarts.js的网速监控,展示最近500秒的网速,如下图所示 2 http(s)://host:port/metrics提供了prometheus的exporter,可以方便地接入prometheus监控,提供网速、内存等监控指标,如下所示
# HELP proxy_out 上行流量
# TYPE proxy_out counter
proxy_out{host="localhost",} 65205
# HELP proxy_in 下行流量
# TYPE proxy_in counter
proxy_in{host="localhost",} 21205
# HELP proxy_out_rate 上行网速
# TYPE proxy_out_rate gauge
proxy_out_rate{host="localhost",} 23967
# HELP proxy_in_rate 下行网速
# TYPE proxy_in_rate gauge
proxy_in_rate{host="localhost",} 5758
# HELP direct_memory_total 直接内存使用量 对于jdk9+,请增加-Dio.netty.tryReflectionSetAccessible=true
# TYPE direct_memory_total gauge
direct_memory_total{host="localhost",} 33554439

jdk9以上设置-Dio.netty.tryReflectionSetAccessible=true的说明

运行指南

# 需要使用jdk17
maven clean package
java -jar target/httpproxy-1.0-SNAPSHOT-all.jar -c proxy.properties

配置文件说明

proxy.properties内容如下

# true:主动索要Proxy-Authorization,可能会被探测到是代理服务器。除非通过Chrom插件SwitchyOmega使用该代理,否则不建议设置为true
# false: 不索要Proxy-Authorization
ask4Authcate=false

# http代理部分设置
# true:开启,false:不开启
http.enable=false                 
# http代理的端口
http.port=6789
# http代理的用户名和密码,逗号分割多个用户。不设置则不启用鉴权
#http.auth=user1:passwd,user2:passwd

# https代理部分设置
# true:开启,false:不开启
https.enable=true
# https代理的端口
https.port=443
# http代理的用户名和密码,逗号分割多个用户。不设置则不启用鉴权
#https.auth=user1:passwd,user2:passwd
# TLS证书的fullchain(从CA证书到域名证书)
https.fullchain.pem=/path/to/fullchain.cer
# TLS证书的私钥
https.privkey.pem=/path/to/private.key

TLS证书的更多说明

以腾讯云的免费ssl证书为例,nginx文件夹中的1_xxx.com_bundle.crt是fullchain,2_xxx.com.key是private.key。相信代码从业者能够从这里举一反三,从而知道从其他途径签发的证书应该如何配置。

测试时,可以使用项目内的cert.pemprivkey.pem(他们由openssl生成),同时需要设置设置chrome不验证localhost的证书

## 证书生成脚本
openssl req -x509 -newkey rsa:4096 -sha256 -nodes -keyout privkey.pem -out cert.pem -days 3650

## chrome不验证本地证书
打开 chrome://flags/#allow-insecure-localhost

性能测试

性能测试

Rust语言版本

rust_http_proxy

轻量、性能、小内存专用

电报交流群

https://t.me/popstary

More Repositories

1

iptablesUtils

iptables转发ddns域名
Shell
1,414
star
2

nftables-nat-rust

nftables nat rule generator——nftables nat规则生成器
Rust
680
star
3

sogo

http流量伪装的socks5代理
Go
46
star
4

socks5

试用http进行流量伪装的socks5代理
Java
33
star
5

rust_http_proxy

基于Rust的正向代理、反向代理和静态资源托管。 forward proxy、reverse proxy and static file serving
Rust
25
star
6

telegram-client

电报java客户端
Java
24
star
7

connect

配合HttpProxy使用,在本机启动http和socks5代理
Java
13
star
8

proxyme

基于java NIO的http代理,支持https
Java
12
star
9

sogo-server

http流量伪装的socks5代理(服务端)
Go
7
star
10

es-score-plugin

elasticsearch 评分插件
Java
7
star
11

trojan

trojan服务端java实现
Java
7
star
12

tdlib-use

Telegram java客户端
6
star
13

nywc

微信小程序——南雍记 springboot2.0+mybaits项目
Java
6
star
14

EasySpider

A spider framework powered by groovy
Java
5
star
15

proxygo

go语言编写的windows翻墙客户端,需配合HttpProxy项目下的proxyserver使用
Go
5
star
16

emarket

6天写成的微信小程序商城
Java
4
star
17

TelegramBot

电报禁言机器人
Go
2
star
18

forward

HttpProxy的客户端
Go
2
star
19

relay

rust 中转
Rust
1
star
20

libuv_test

HTML
1
star
21

arloor

1
star
22

ForkJoinPoolDemo

Java
1
star
23

go-actions

golang的避坑记录
Go
1
star
24

arloor.github.io

SCSS
1
star
25

seedrs

股权众筹平台seedrs的所有众筹项目
CSS
1
star
26

intel_cpu_temperature

操作MSR寄存器,实现对CPU温度、功耗的读取、控制
C
1
star
27

development-master-samples-ToyVpn1

Java
1
star
28

service4tensorflow

tensoflow微服务
Java
1
star
29

ddns

自动识别ip变更,并更新dnspod的域名解析
Rust
1
star
30

moontell_jizhang

记账本小程序
JavaScript
1
star
31

sogo-client-netty

sogo-client netty移植版(更优雅实现
Java
1
star