【问题标题】:getting cloudflare 429 when trying to simulate request, not getting it when using fiddler尝试模拟请求时得到cloudflare 429,使用提琴手时没有得到它
【发布时间】:2023-10-20 23:26:01
【问题描述】:

我尝试使用 java 模拟请求,但每次我尝试发送它时,我都会得到一个 cloudflare 429,当使用 fiddler 模拟相同的请求时,我得到 200。 Java 代码(不工作):

Jsoup.connect("")
            .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36")
            .header("Connection", "keep-alive")
            .header("Cache-Control", "max-age=0")
            .header("Upgrade-Insecure-Requests", "1")
            .header("Sec-Fetch-Dest", "document")
            .header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9")
            .header("Sec-Fetch-Site", "none")
            .header("Sec-Fetch-Mode", "navigate")
            .header("Sec-Fetch-User", "?1")
            .header("Accept-Encoding","gzip, deflate, br")
            .header("Accept-Language","en-US,en;q=0.9,he-IL;q=0.8,he;q=0.7")
            .ignoreContentType(true)
            .ignoreHttpErrors(true)
            .method(Method.GET)
            .execute();

Fiddler RAW(工作中,200)

GET 
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36
Sec-Fetch-Dest: document
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9,he-IL;q=0.8,he;q=0.7

字面上使用相同的标头,cloudflare 是否有另一种方式知道我没有使用 Webdriver?

【问题讨论】:

  • 重定向 JSoup 请求,使其也通过 Fiddler,然后将实际发送的请求与保存的请求进行比较。

标签: java jsoup fiddler


【解决方案1】:

您的问题不在代码级别。 HTTP status code 429 表示 Too many requests

您似乎发送了太多请求,因此触发了 Cloudflare 的 DOS 攻击保护。

【讨论】:

  • 我在 Fiddler 上没有收到 429,即使在一个接一个地发送请求时,只有 java 被阻止
  • 然后 Cloudflare 检测到您正在使用 Java(例如,基于可用的 TLS 版本和启用的密码)并禁止通过 Java 使用。
  • 我可以绕过它吗? @Rober
  • 首先关注我对您问题的评论。如果请求相同并且通过 Fiddler 运行,您可以尝试禁用 Java 中的 TLS1.0 和 TLS1.1 以及一些可用的密码(确保您使用的是 Java 11 而不是旧的 Java 8)。
最近更新 更多