You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java自动化检测doxbin页面存在性遇DDoS防护拦截求解决方案

解决Doxbin页面检测中DDoS防护导致的虚假200状态码问题

我明白你的困扰——DDoS防护系统确实会给这类自动化检测添不少麻烦,它们会拦截非浏览器的请求,甚至返回虚假的200状态码来混淆判断。下面是几个可行的调整方案,你可以试试:

1. 模拟真实浏览器的请求头

大多数DDoS防护会通过检查请求头来识别非浏览器请求,你可以给请求添加常见的浏览器头信息,让请求看起来更“真实”。修改你的代码,添加这些请求属性:

URL u = new URL("https://doxbin.org/upload/afafgFsg/");
HttpURLConnection huc = (HttpURLConnection) u.openConnection();
huc.setRequestMethod("GET");

// 添加浏览器请求头,模拟Chrome浏览器
huc.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36");
huc.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
huc.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
huc.setRequestProperty("Referer", "https://doxbin.org/");

huc.connect();
int code = huc.getResponseCode();
System.out.println(code);

// 额外检查响应内容,判断是否是防护页面
if (code == 200) {
    // 读取响应的前几百个字符,检查是否包含防护页面的特征文本
    BufferedReader in = new BufferedReader(new InputStreamReader(huc.getInputStream()));
    StringBuilder content = new StringBuilder();
    String line;
    while ((line = in.readLine()) != null && content.length() < 500) {
        content.append(line);
    }
    in.close();
    
    if (content.toString().contains("DDoS protection") || content.toString().contains("Please verify you are human")) {
        System.out.println("Blocked by DDoS protection");
    } else {
        System.out.println("Page exists");
    }
} else if (code == 404) {
    System.out.println("Not Found");
} else {
    System.out.println("Error");
}

2. 使用更灵活的HTTP客户端库

原生的HttpURLConnection功能有限,试试OkHttp或者Java 11+自带的HttpClient,它们更容易处理会话、Cookie和复杂请求。以OkHttp为例:

首先添加Maven依赖(如果用Maven管理项目):

<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.11.0</version>
</dependency>

然后编写检测代码:

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
    .url("https://doxbin.org/upload/afafgFsg/")
    .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36")
    .header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
    .build();

try (Response response = client.newCall(request).execute()) {
    if (!response.isSuccessful()) {
        if (response.code() == 404) {
            System.out.println("Not Found");
        } else {
            System.out.println("Error: " + response.code());
        }
        return;
    }

    // 检查响应内容是否是防护页面
    String body = response.body().string();
    if (body.contains("DDoS protection") || body.contains("Verify you are human")) {
        System.out.println("Blocked by DDoS protection");
    } else {
        System.out.println("Page exists");
    }
} catch (IOException e) {
    e.printStackTrace();
}

3. 处理Cookie验证

有些DDoS防护会要求先访问首页获取Cookie,再带着Cookie请求目标页面。你可以先请求doxbin的首页,保存Cookie,然后在后续请求中带上:

// 先获取首页的Cookie
URL homeUrl = new URL("https://doxbin.org/");
HttpURLConnection homeConn = (HttpURLConnection) homeUrl.openConnection();
homeConn.connect();
String cookie = homeConn.getHeaderField("Set-Cookie");

// 用获取到的Cookie请求目标页面
URL targetUrl = new URL("https://doxbin.org/upload/afafgFsg/");
HttpURLConnection targetConn = (HttpURLConnection) targetUrl.openConnection();
targetConn.setRequestMethod("GET");
targetConn.setRequestProperty("Cookie", cookie);
// 同时添加浏览器请求头
targetConn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36");

targetConn.connect();
// 后续的状态码和内容检查逻辑和之前一致...

注意事项

  • 不要过于频繁地发送请求,否则你的IP可能会被永久封禁,建议添加合理的延迟(比如几秒一次)。
  • 如果防护系统要求验证码,那么纯自动化的方式很难绕过,这种情况下可能需要手动辅助或者使用验证码识别服务(但这类服务可能不符合网站的使用条款)。

内容的提问来源于stack exchange,提问作者Shept

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 10:22:53