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

抓取含@符号的游戏名称时被识别为邮箱的解决方法

批量解决Cloudflare混淆的游戏名称(含@符号)问题

这是Cloudflare的邮箱混淆机制误将游戏名里的@识别成邮箱导致的,直接爬取会得到[email protected]占位符。可以通过解析__cf_email__标签的data-cfemail属性批量解密还原真实名称。

步骤1:实现Cloudflare混淆内容的通用解密函数

Cloudflare的解密逻辑是:将data-cfemail的十六进制字符串转成字节数组,以第一个字节为密钥,依次异或后续每个字节,得到原字符的ASCII码,再拼接成字符串。

def decode_cf_email(cf_email):
    # 将十六进制字符串转为字节数组
    bytes_data = bytes.fromhex(cf_email)
    # 第一个字节是密钥
    key = bytes_data[0]
    # 遍历后续字节,异或密钥得到原字符
    decoded = ''.join([chr(b ^ key) for b in bytes_data[1:]])
    return decoded

步骤2:批量处理页面中的所有混淆元素

在获取页面并解析为BeautifulSoup对象后,遍历所有带__cf_email__类的span标签,解密后替换原标签内容:

import requests
from bs4 import BeautifulSoup

def process_game_page(url):
    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(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # 批量处理所有__cf_email__标签
    cf_email_spans = soup.find_all('span', class_='__cf_email__')
    for span in cf_email_spans:
        cf_email_data = span.get('data-cfemail')
        if cf_email_data:
            decoded_text = decode_cf_email(cf_email_data)
            # 替换span标签为解密后的文本
            span.replace_with(decoded_text)
    
    # 按需提取游戏名称,此处假设游戏名在h1标签内,可根据实际页面结构调整
    game_name = soup.find('h1').get_text(strip=True)
    return game_name

# 批量抓取示例:遍历游戏URL列表
game_urls = [
    'https://example.com/game1',
    'https://example.com/game2',
    # 更多游戏URL...
]

for url in game_urls:
    try:
        name = process_game_page(url)
        print(f"游戏名称:{name}")
    except Exception as e:
        print(f"处理{url}失败:{str(e)}")

关键说明

  • 必须带上合理的User-Agent,避免被Cloudflare拦截
  • 解密函数是通用的,能处理所有Cloudflare混淆的__cf_email__标签,不管是邮箱还是被误判的游戏名
  • 批量处理时,只需在解析页面后调用一次遍历替换逻辑,就能自动修复所有混淆内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:22:04