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

Colab中requests.get(url)返回空内容,遭网站防火墙拦截求助

问题:Colab中使用requests爬取dcinside网站遭防火墙拦截
  • 本地Jupyter环境爬取其他网站及该目标站均正常,但Colab访问目标URL时,虽返回200状态码,但response无有效内容,被Web防火墙拦截
  • 已尝试更换User-Agent、切换HTTP/HTTPS,均未解决问题
  • 目标URL:https://gall.dcinside.com/board/view/?id=piano&no=1&exception_mode=notice&page=1
  • 拦截提示(翻译后):


违反Web防火墙安全策略的请求/响应已被拦截。

检测时间2024-03-12 21:52:05
检测到的客户端IP35.236.245.49
检测到的URLhttps://gall.dcinside.com/board/view/

解决方案

1. 清理请求中的冗余参数

你的GET请求里错误携带了data={'buscar':100000},GET请求不应使用data参数,这会被编码到URL中,大概率触发防火墙规则。直接移除该参数:

import requests
from bs4 import BeautifulSoup as bs

url = 'https://gall.dcinside.com/board/view/?id=piano&no=1&exception_mode=notice&page=1'
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Whale/3.25.232.19 Safari/537.36'}
response = requests.get(url, headers=headers)  # 移除多余的data参数
soup = bs(response.content, "html.parser")
print(soup)

2. 补全浏览器请求头信息

仅靠User-Agent不足以模拟真实浏览器,添加更多常见请求头字段,降低被识别为爬虫的概率:

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
    'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
    'Referer': 'https://gall.dcinside.com/board/lists/?id=piano',  # 模拟从列表页跳转的真实访问路径
    'Connection': 'keep-alive',
    'Upgrade-Insecure-Requests': '1'
}

3. 更换代理IP(适配Colab环境)

Colab的云服务器IP段大概率被dcinside防火墙标记为可疑,使用代理IP隐藏真实地址,优先选择韩国地区代理(目标站为韩国网站):

proxies = {
    'http': 'http://your-korea-proxy-ip:port',
    'https': 'https://your-korea-proxy-ip:port'
}
response = requests.get(url, headers=headers, proxies=proxies)

4. 用Session维持会话状态

模拟浏览器的会话机制,先访问网站列表页建立会话,再请求目标详情页,更贴近真实用户行为:

session = requests.Session()
# 先访问列表页初始化会话
session.get('https://gall.dcinside.com/board/lists/?id=piano', headers=headers)
# 再请求目标页面
response = session.get(url, headers=headers)
soup = bs(response.content, "html.parser")

5. 切换到Selenium模拟真实浏览器

如果以上方法均无效,用Selenium完全模拟浏览器渲染行为,绕过基于请求特征的防火墙拦截。Colab中需先安装依赖:

!pip install selenium
!apt-get update
!apt-get install chromium-chromedriver

然后运行爬取代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup as bs

chrome_options = Options()
chrome_options.add_argument('--headless')  # 无头模式适配Colab无界面环境
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36')

driver = webdriver.Chrome(options=chrome_options)
driver.get(url)
soup = bs(driver.page_source, "html.parser")
print(soup)
driver.quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 03:49:59