【问题标题】:JSoup can't load a website fast enough, but only for meJSoup 加载网站的速度不够快,但仅限于我
【发布时间】:2021-10-22 14:24:14
【问题描述】:

我正在制作一个 android 应用程序,它会抓取某个网站内容并将其放入列表中。最近,我在 Document(JScoup 类)突然不包含某些元素的地方出现了一个错误。我打印了整个文档,这就是我得到的:

<html>
 <head>
    <script type="text/javascript"><!--
    function leastFactor(n) {
    if (isNaN(n) || !isFinite(n)) return NaN;
    if (typeof phantom !== 'undefined') return 'phantom';
    if (typeof module !== 'undefined' && module.exports) return 'node';
    if (n==0) return 0;
    if (n%1 || n*n<2) return 1;
    if (n%2==0) return 2;
    if (n%3==0) return 3;
    if (n%5==0) return 5;
    var m=Math.sqrt(n);
    for (var i=7;i<=m;i+=30) {
        if (n%i==0)      return i;
        if (n%(i+4)==0)  return i+4;
        if (n%(i+6)==0)  return i+6;
        if (n%(i+10)==0) return i+10;
        if (n%(i+12)==0) return i+12;
        if (n%(i+16)==0) return i+16;
        if (n%(i+22)==0) return i+22;
        if (n%(i+24)==0) return i+24;
    }
    return n;
    }
    function go() {
     var p=2456313912482; var s=1782578125; var n;
    if ((s >> 3) & 1)/* 120886108*
    */p+=293087928*/* 120886108*
    */4;/*
    *13;
    */else 
    p-=/* 120886108*
    */202819457*/*
    *13;
    */4;/*
    *13;
    */if ((s >> 1) & 1)
    p+=296193202*/*
    else p-=
    */2;/*
    else p-=
    */else /* 120886108*
    */p-=812964012*2;/*
    p+= */if ((s >> 0) & 1) p+=/*
    p+= */548319846* 3;/*
    p+= */else /*
    p+= */p-=/*
    *13;
    */1210867650*
    1;/* 120886108*
    */if ((s >> 8) & 1) p+=
    151523417*  11;
    else /*
    *13;
    */p-= 212850085*    9;/* 120886108*
    */if ((s >> 4) & 1) p+=/*
    else p-=
    */81741529*
    7;/*
    *13;
    */else /*
    *13;
    */p-=/*
    p+= */18587493*
    5;/*
    else p-=
    */ p-=4349934143;
     n=leastFactor(p);
    { document.cookie="duplexdataiad="+n+"*"+p/n+":"+s+":2100623372:1;path=/;";
      document.location.reload(true); }
    }
//--></script>
</head> 
<body onload="go()">
   Loading...  
</body>

显然,&lt;body&gt; 在 JSoup 抓取它时仍在加载。奇怪的是,它只偶尔发生,而且当它发生时,它只发生在我身上,而且只发生在我的互联网连接上(以太网、wifi,都不起作用),但只要我打开手机上的移动数据,我尝试测试应用程序,它突然完美运行。我的朋友也在和我一起开发这个应用程序,他曾经有过一次这个问题,但在那之后就再也没有了。有谁知道如何解决这个问题?

【问题讨论】:

    标签: java android web-scraping jsoup


    【解决方案1】:

    似乎某种反机器人机制已检测到您并正在为您提供不良页面。因此,为什么它可以通过一个互联网连接正常工作,但不能通过另一个互联网连接工作。我怀疑您的 IP/其他一些数据/指纹已记录在某处并被视为机器人。实际上,您所能做的就是减慢抓取速度,以免您被视为机器人,或者在连接之间切换以试图逃避检测。

    如果您从浏览器尝试“糟糕”的互联网连接是什么,它会起作用吗?

    【讨论】:

    • 感谢您的回答,您认为如果其他人在手机上使用该应用程序,他们是否也可能仅通过 JSoup 抓取网页而得到此错误?
    • 网站加载正常,是的。
    • 如果浏览器正常工作,您的请求可能已被指纹识别并被阻止 - 查看您的浏览器设置的标题。通常 Referer 和 cookie 用于跟踪会话,有时使用 user-agent - 如果您可以复制浏览器为新会话发送的内容(提示:每次删除 cookie - 有用于 cookie 的浏览器插件),您可以跟踪在客户端/服务器之间发送的 http 调用 + 标头/cookie 以复制流程。这样你就不会被屏蔽
    猜你喜欢
    • 1970-01-01
    • 2020-07-26
    • 2020-05-09
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    相关资源
    最近更新 更多