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

Laravel爬虫无法抓取需启用JavaScript的网站问题求助

解决Laravel爬虫中启用JavaScript仍被拦截的问题

问题场景

尝试抓取链接 https://datacvr.virk.dk/soegeresultater?sideIndex=0&enhedstype=virksomhed&antalAnsatte=ANTAL_20_49&virksomhedsstatus=aktiv%252Cnormal&size=10 时:

  • 使用Symfony HttpBrowser在维基百科等站点正常运行,但目标站返回「需启用JavaScript才能继续」错误;
  • 更换Symfony Panther的Chrome Client后,仍提示「启用JavaScript和Cookie以继续」。

解决方案

1. 调整Panther Chrome Client的自动化检测规避配置

Panther默认启用JavaScript,但很多网站会识别「自动化浏览器」特征,需添加参数规避:

use Symfony\Component\Panther\Client;

$client = Client::createChromeClient(null, [
    '--enable-javascript',
    '--accept-cookies',
    '--disable-blink-features=AutomationControlled', // 核心:移除Chrome自动化标记
    '--no-sandbox', // 部分服务器环境需要的参数
]);

--disable-blink-features=AutomationControlled 会让浏览器隐藏「被自动化控制」的标识,避免被目标站的反爬机制拦截。

2. 添加真实浏览器请求头

即使是无头浏览器,也需要模拟普通用户的请求头,减少被识别的概率:

$client->request('GET', '你的目标URL', [], [], [
    'HTTP_USER_AGENT' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
    'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
    'HTTP_ACCEPT_LANGUAGE' => 'da-DK,da;q=0.9,en-US;q=0.8,en;q=0.7', // 匹配目标站语言(丹麦语)
    'HTTP_ACCEPT_ENCODING' => 'gzip, deflate, br',
    'HTTP_CONNECTION' => 'keep-alive',
    'HTTP_UPGRADE_INSECURE_REQUESTS' => '1',
]);

设置与目标站匹配的语言头,能更贴近真实用户的请求特征。

3. 先获取初始会话Cookie

部分网站需要先访问首页建立会话,再请求目标页面:

// 先访问网站首页,获取初始会话Cookie
$client->request('GET', 'https://datacvr.virk.dk/');
// 等待首页JS加载完成(可选,根据页面实际元素调整)
$client->waitFor('#main-content');
// 再请求目标搜索结果页
$client->request('GET', '你的目标搜索URL');

初始会话Cookie是很多网站验证用户合法性的基础,缺少会直接触发拦截。

4. 更换为Playwright工具

如果Panther仍无法绕过拦截,推荐使用PHP版Playwright,它对浏览器的模拟更贴近真实用户:
首先安装依赖:

composer require symfony/playwright

示例代码:

use Symfony\Component\Playwright\Playwright;

$playwright = Playwright::create();
$browser = $playwright->chromium->launch([
    'headless' => true,
    'args' => ['--disable-blink-features=AutomationControlled'],
]);
$page = $browser->newPage([
    'userAgent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
]);

// 访问首页建立会话
$page->goto('https://datacvr.virk.dk/');
$page->waitForLoadState('networkidle');

// 跳转至目标搜索页
$page->goto('你的目标URL');
// 等待搜索结果加载完成
$page->waitForSelector('.search-result-item');

// 获取页面内容
$content = $page->content();

$browser->close();

Playwright内置更完善的反检测机制,能有效绕过多数网站的反爬拦截。

5. 合规提示

目标网站为丹麦商业登记平台,需确保爬虫行为符合网站的robots.txt规则及当地数据使用法律,避免违规操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:27:18