# 严格反代理检测解决方案 ## 方案1:使用Nginx + sub_filter(推荐) ### 配置要点: 1. **Host头处理**:`proxy_set_header Host b.com` 2. **内容替换**:使用sub_filter替换所有域名引用 3. **JavaScript注入**:注入脚本修复域名检测 ### 适用场景: - 静态网站 - 简单的动态网站 - 没有复杂JavaScript检测的网站 ## 方案2:使用Node.js代理服务器 ```javascript const express = require('express'); const { createProxyMiddleware } = require('http-proxy-middleware'); const cheerio = require('cheerio'); const app = express(); app.use('/', createProxyMiddleware({ target: 'https://b.com', changeOrigin: true, onProxyRes: function (proxyRes, req, res) { if (proxyRes.headers['content-type'] && proxyRes.headers['content-type'].includes('text/html')) { let body = ''; proxyRes.on('data', function(chunk) { body += chunk; }); proxyRes.on('end', function() { const $ = cheerio.load(body); // 替换所有域名引用 $('a[href*="b.com"]').each(function() { $(this).attr('href', $(this).attr('href').replace(/b\.com/g, 'a.com')); }); $('img[src*="b.com"]').each(function() { $(this).attr('src', $(this).attr('src').replace(/b\.com/g, 'a.com')); }); // 注入JavaScript修复脚本 $('head').append(` `); res.end($.html()); }); } else { proxyRes.pipe(res); } } })); app.listen(3000); ``` ## 方案3:使用Python代理服务器 ```python from flask import Flask, request, Response import requests from bs4 import BeautifulSoup import re app = Flask(__name__) @app.route('/', defaults={'path': ''}) @app.route('/') def proxy(path): target_url = f'https://b.com/{path}' # 转发请求到目标网站 headers = dict(request.headers) headers['Host'] = 'b.com' resp = requests.get(target_url, headers=headers, stream=True) if 'text/html' in resp.headers.get('content-type', ''): # 处理HTML内容 content = resp.content.decode('utf-8') # 替换域名引用 content = re.sub(r'https?://b\.com', 'https://a.com', content) content = re.sub(r'//b\.com', '//a.com', content) # 注入JavaScript修复脚本 js_fix = ''' ''' content = content.replace('', js_fix + '') return Response(content, status=resp.status_code, headers=resp.headers) else: # 直接转发非HTML内容 return Response(resp.content, status=resp.status_code, headers=resp.headers) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000) ``` ## 方案4:使用浏览器自动化(最后选择) ```python from selenium import webdriver from selenium.webdriver.chrome.options import Options from flask import Flask, request, Response import time app = Flask(__name__) @app.route('/') def proxy(): chrome_options = Options() chrome_options.add_argument('--headless') chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-dev-shm-usage') driver = webdriver.Chrome(options=chrome_options) try: driver.get('https://b.com') time.sleep(2) # 等待页面加载 # 执行JavaScript修复 driver.execute_script(""" Object.defineProperty(window.location, 'hostname', { get: function() { return 'b.com'; } }); Object.defineProperty(window.location, 'host', { get: function() { return 'b.com'; } }); Object.defineProperty(window.location, 'origin', { get: function() { return 'https://b.com'; } }); Object.defineProperty(document, 'domain', { get: function() { return 'b.com'; }, set: function() { return 'b.com'; } }); """) page_source = driver.page_source # 替换域名引用 page_source = page_source.replace('https://b.com', 'https://a.com') page_source = page_source.replace('http://b.com', 'https://a.com') return Response(page_source, mimetype='text/html') finally: driver.quit() if __name__ == '__main__': app.run(host='0.0.0.0', port=5000) ``` ## 常见反代理检测及解决方案 ### 1. Host头检测 ```nginx proxy_set_header Host b.com; ``` ### 2. Referer检测 ```nginx proxy_set_header Referer https://b.com; ``` ### 3. User-Agent检测 ```nginx proxy_set_header User-Agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"; ``` ### 4. JavaScript域名检测 ```javascript // 注入修复脚本 Object.defineProperty(window.location, 'hostname', { get: function() { return 'b.com'; } }); ``` ### 5. CSP (Content Security Policy) 绕过 ```nginx # 移除或修改CSP头 proxy_hide_header Content-Security-Policy; add_header Content-Security-Policy "frame-ancestors 'self' https://a.com"; ``` ### 6. X-Frame-Options 绕过 ```nginx # 移除X-Frame-Options头 proxy_hide_header X-Frame-Options; ``` ## 部署建议 1. **先测试简单网站**:验证基本代理功能 2. **逐步添加功能**:从基础代理开始,逐步添加内容替换 3. **监控日志**:密切关注错误日志和访问日志 4. **性能优化**:添加缓存和压缩 5. **安全考虑**:确保代理服务器安全配置 ## 注意事项 - 某些网站可能违反服务条款 - 需要确保合法使用 - 考虑性能和资源消耗 - 定期更新和维护代理配置