Javascript 为什么Cloudflare 403仅适用于无头请求?

Javascript 为什么Cloudflare 403仅适用于无头请求?,javascript,web-scraping,puppeteer,cloudflare,http-status-code-403,Javascript,Web Scraping,Puppeteer,Cloudflare,Http Status Code 403,我正在尝试使用Puppeter加载受Cloudflare保护的页面。当它加载为无头时,它将403并显示验证码。但是,当它以非无头方式加载时,它会收到一个200并正确加载页面 我试图了解在非无头加载过程中发生了什么,以允许页面正确加载 我认为这可能是页面上的某种本地Javascript执行,但我在所有情况下都禁用了Javascript。我还排除了IP和速率限制——所有测试都在同一台个人机器上进行,至少间隔1分钟 代码如下: (异步()=>{ 让无头=真实; const browser=wait p

我正在尝试使用Puppeter加载受Cloudflare保护的页面。当它加载为无头时,它将403并显示验证码。但是,当它以非无头方式加载时,它会收到一个200并正确加载页面

我试图了解在非无头加载过程中发生了什么,以允许页面正确加载

我认为这可能是页面上的某种本地Javascript执行,但我在所有情况下都禁用了Javascript。我还排除了IP和速率限制——所有测试都在同一台个人机器上进行,至少间隔1分钟

代码如下:

(异步()=>{
让无头=真实;
const browser=wait puppeter.launch({headless});
const page=wait browser.newPage();
等待页面。setJavaScriptEnabled(false);
等待页面。转到('https://angel.co/company/angellist/jobs');
等待page.screenshot({path:'out.png'});
等待浏览器关闭();
})();
结果是:

对于
headless=false

对于
headless=true