Files
blog/_posts/2019-04-27-antiban.md
T
2022-01-04 20:42:55 +08:00

61 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
layout: post
title: Mayx的Anti-Ban计划
tags: [Mayx, Anti-Ban]
---
经过研究,网关管理没什么好怕的!<!--more-->
# 起因
众所周知,由于某些原因,互联网总是被上层网关所限制,所以为了解决这个问题,我研究了一下Ban的原理和Anti-Ban的方法。
# Ban的原理
Ban网站的原理大概分为以下几点:
1.DNS缓存污染(Ban域名)
2.IP地址或传输层端口封锁(BanIP)
3.TCP重置攻击
具体内容请自行前往[Wikipedia](https://zh.wikipedia.org/wiki/%E4%BA%92%E8%81%94%E7%BD%91%E5%AE%A1%E6%9F%A5
)自行查询(这个链接可没有特指哦~),在此不再详述。
# Anti-Ban的方案
## 针对Ban域名的方案
DNSSEC、DNSCrypt、DoT、DoH等等都可以解决这个问题,或者是不通过DNS,直接获得IP,然后发送Host头来获取网页内容也可以。我的想法是建立一个本地Proxy,先通过前面几种方案获得IP,然后发送Host,这里需要注意的是要通过HTTPS发送但是不使用SNI,因为SNI是不加密的,而且用代理就没必要一定要获得正确的证书。
防火墙会对SNI进行拦截,所以需要注意。
## 针对BanIP的方案
BanIP是真的绝,因为网络控制毕竟在网关,Ta要丢包谁也没办法,不过可以试试CloudFlareCloudFlare可以不使用原网站的IP,而且很多网站都使用CloudFlare,所以BanCloudFlare的IP肯定不是好选择。
## TCP重置攻击
HTTPS基本上可以避免这个问题,除了会受SNI没加密的影响(TLS1.3可解),但是证书……没关系,靠本地Proxy对证书的要求不是很多。这个解决方案基本上就是加密,让网关不知道你在干什么,也就不能对你发RST包了。
# 计划
制作一个本地Proxy小程序,用Python是个不错的选择,绕过DNS和TCP Reset,再配上CloudFlare,基本上网关应该就Ban不了你了。
不过Python的学习成本还挺高的,感觉比PHP难……回头有时间可以试试看。
# 结果
Python对我来说果然还是太难了QAQ,所以,我觉得使用Nginx就够用了,配置如下:
```
location / {
proxy_pass https:// #填写目标IP;
proxy_redirect off ;
proxy_set_header Host #填写目标域名;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 300; #跟后端服务器连接超时时间,发起握手等候响应时间
proxy_send_timeout 300; #后端服务器回传时间,就是在规定时间内后端服务器必须传完所有数据
proxy_read_timeout 600; #连接成功后等待后端服务器的响应时间,已经进入后端的排队之中等候处理
proxy_buffer_size 256k; #代理请求缓冲区,会保存用户的头信息以供nginx进行处理
proxy_buffers 4 256k; #同上,告诉nginx保存单个用几个buffer最大用多少空间
proxy_busy_buffers_size 256k; #如果系统很忙时候可以申请最大的proxy_buffers
proxy_temp_file_write_size 256k; #proxy缓存临时文件的大小
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_max_temp_file_size 128m;
}
```
果然,搞事情还是用自己熟悉的搞比较好~23333
# 事实
我果然还是图样图森破了~我想的方案其实就是[域前置](https://zh.wikipedia.org/wiki/%E5%9F%9F%E5%89%8D%E7%BD%AE),所以,该计划作废QAQ