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

如何用GET获取网站HTML代码?PHP及Postman请求异常排查

问题解答

1. 不使用Selenium类工具,通过GET请求获取网站HTML代码

直接借助HTTP客户端工具或语言自带的HTTP请求库即可实现,以下是几种常见语言的示例:

  • PHP:使用cURL(推荐,兼容性更强)或file_get_contents
    $ch = curl_init('https://example.com');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    // 模拟浏览器的User-Agent,避免被识别为非浏览器请求
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36');
    $html = curl_exec($ch);
    curl_close($ch);
    echo $html;
    
  • Python:使用requests库
    import requests
    headers = {
        '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'
    }
    response = requests.get('https://example.com', headers=headers)
    print(response.text)
    
  • Node.js:使用axios模块
    const axios = require('axios');
    axios.get('https://example.com', {
        headers: {
            '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'
        }
    }).then(res => console.log(res.data));
    

核心是模拟浏览器的请求头(尤其是User-Agent),避免被网站的反爬机制拦截。


2. PHP请求目标网站响应异常的相关问题

为什么PHP请求与浏览器响应不同?

主要有两个核心原因:

  • 反爬规则校验:网站会检查请求的User-Agent、Accept、Referer、Cookie等信息,PHP默认的请求头与浏览器差异极大,被识别为爬虫后返回了特制内容。
  • JS动态渲染依赖:网站的部分内容是通过JavaScript在客户端动态生成的,PHP直接发送GET请求只能拿到初始的静态HTML,而浏览器会自动执行JS渲染出最终内容,两者自然不同。

能否绕过JS内容保护?

可以尝试以下几种方案:

  1. 完全模拟浏览器请求头+Cookie:在浏览器中打开目标页面,复制完整的请求头(包括User-Agent、Cookie、Accept系列字段),在PHP的cURL请求中完全复用这些信息,部分网站仅靠这一步就能拿到渲染后的内容。
  2. 直接请求数据接口:打开浏览器开发者工具的Network面板,找到加载动态内容的XHR/Fetch请求,直接调用这些数据接口获取原始数据,再自行处理成所需格式,这种方式比解析HTML更高效。
  3. 集成服务端JS执行环境:比如在PHP中配置V8Js扩展,或者调用独立的Node.js服务来执行页面JS,渲染出完整HTML,这种方式无需Selenium,但需要额外的环境配置。

为什么Postman第一次请求正确,后续失败?

问题出在会话有效性和请求完整性上:

  • Cookie过期或失效:从Chrome复制的cURL请求包含了浏览器当前有效的会话Cookie,这类Cookie通常有有效期,或者网站会对会话做单次/限时限制,第二次执行时Cookie已失效,导致返回内容变化。
  • 请求头丢失:Postman导入cURL后,可能未完整保存所有请求头,或者后续操作中误删了Cookie、Referer等关键字段,导致请求不符合网站的校验规则。

检查并确保Postman每次请求都带上有效的Cookie和完整的浏览器请求头,即可解决该问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 14:06:21