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

如何绕过区域限制网站避免API崩溃,继续执行Selenium截图任务?

解决方法

1. 异常捕获与强制跳过

给网站访问、截图的核心代码块加上异常捕获逻辑,覆盖所有可能出现的网络错误(连接超时、访问被拒、HTTP 403/503等状态码)。捕获到异常后,记录该网站的错误信息,直接跳过当前任务,继续处理下一个网站。

以Python+Pyppeteer为例:

import csv
from pyppeteer import launch

async def capture_single_site(url):
    browser = None
    try:
        browser = await launch()
        page = await browser.newPage()
        # 设置30秒超时,避免长时间阻塞
        await page.goto(url, timeout=30000)
        await page.screenshot({'path': f'{url.split("//")[-1].replace("/", "_")}.png'})
        return (url, "截图成功")
    except Exception as e:
        # 记录具体错误类型,方便后续排查
        return (url, f"失败: {str(e)}")
    finally:
        if browser:
            await browser.close()

async def batch_process(url_list, csv_path):
    with open(csv_path, 'w', newline='', encoding='utf-8') as f:
        writer = csv.writer(f)
        writer.writerow(["网站链接", "处理状态"])
        for url in url_list:
            result = await capture_single_site(url)
            writer.writerow(result)
            # 无论成功失败,直接进入下一个循环

2. 前置可访问性检测

在执行截图前,先对网站做轻量连通性检测(比如发送HEAD请求),提前筛选出无法访问的网站,跳过截图步骤,节省资源。

示例代码:

import requests

def is_site_accessible(url):
    try:
        # 发送HEAD请求,只获取响应头,不下载页面内容
        response = requests.head(url, timeout=10, allow_redirects=True)
        # 状态码小于400则认为可尝试访问
        return response.status_code < 400
    except:
        return False

3. 配置代理(可选)

如果需要访问区域限制的网站,可配置合规代理IP,将受阻请求通过代理转发。注意选择稳定的代理服务,避免触发目标网站的反爬机制。

Pyppeteer中配置代理的示例:

browser = await launch(args=['--proxy-server=http://your-proxy-ip:port'])

4. 严格设置超时阈值

给所有网络请求、页面加载、截图操作设置明确的超时时间,确保单个网站的异常不会阻塞整个批量任务的执行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:11:36