gpt4 book ai didi

java - 使用 JSoup 从网页读取元素时出现 503 错误

转载 作者:行者123 更新时间:2023-12-01 10:04:35 24 4
gpt4 key购买 nike

因此,我一直在使用以下代码来查找页面上给定方法中特定 id 的特定元素。但是,当我没有定义用户代理时,网站似乎会返回 403,而当我使用用户代理时,则会收到 503 错误。该网站似乎使用了 cloudflare,据我所知,它是用来防止 DDOS 攻击的 - 所以我有点困惑为什么我无法阅读该页面?

public static String getMargin(final int id) {
String url = "https://rsbuddy.com/exchange?id=" + id + "&";
Document document = null;
try {
document = Jsoup.connect(url).timeout(30000)
.userAgent(
"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36")
.get();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return document.select("#buy-price").text();

}

我怎样才能拥有它,以便我最终可以从网页读取元素,而不是收到 403 禁止或 503 不可用错误?谢谢。

最佳答案

您需要使用 ignoreHttpErrors 设置进行连接

Jsoup.connect(url).timeout(30000)
.ignoreHttpErrors(true)
...

页面内容将是您使用浏览器连接时看到的内容。该页面包含一个小脚本(看起来像是根据每个请求生成的)。该脚本将计算一个值,并在提交之前将其设置到以下表单的 jschl-answer 字段中

<form id="challenge-form" action="/cdn-cgi/l/chk_jschl" method="get"> 
<input type="hidden" name="jschl_vc" value="some-generated-value">
<input type="hidden" name="pass" value="some-generated-value">
<input type="hidden" id="jschl-answer" name="jschl_answer">
</form>

必须使用正确的值提交表单(另外,不要忘记获取/设置 cookie)。

所以关键点是通过找到他们的算法(这会很困难)或通过读取 script 标签,将其修改为来计算 jschl-answer能够在本地运行并在本地执行。

总而言之,这不是一件容易的事,但我认为这是可行的。

关于java - 使用 JSoup 从网页读取元素时出现 503 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36546466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com