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

如何让Selenium WebDriver始终打开SoccerWay国际版而非巴西版?

解决Selenium访问SoccerWay国际版自动跳转巴西版的问题

问题描述

我每天早上都会访问SoccerWay网站查看当日赛事,偏好使用国际版(https://int.soccerway.com/)而非巴西版(https://br.soccerway.com/)。常规浏览器里偏好已经保存好不用调整,但用Selenium WebDriver访问时,就算打开国际版链接,页面还是会自动跳转到巴西版。

目前用的临时办法是让WebDriver重复加载两次国际版页面,让网站记录我的偏好:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.service import Service
from os import path

def web_driver():
    service = Service(log_path=path.devnull)
    options = Options()
    options.set_preference("general.useragent.override", my_user_agent)
    options.page_load_strategy = 'eager'
    driver = webdriver.Firefox(options=options,service=service)
    return driver

driver = web_driver()
driver.get("https://int.soccerway.com/")
driver.get("https://int.soccerway.com/")

但页面加载慢的时候这个办法会出问题:没法判断页面什么时候加载完,导致第二次加载后之前的操作(比如滚动、点击)回到页面顶部。试过用Cookie解决,但不知道该用哪些Cookie、怎么配置,想问怎么让WebDriver打开页面后一直保持在国际版?

解决方案

1. 提前注入地区偏好Cookie

SoccerWay靠Cookie记录用户的版本偏好,你可以在首次打开页面之前就把对应Cookie注入进去,直接避免跳转:

  • 先在常规浏览器打开国际版,按F12打开开发者工具,切换到「应用」→「Cookie」,找到https://int.soccerway.com/下的Cookie,关键的一般是preferred_country这类名称,值对应国际版(比如int)。
  • 在Selenium里先打开空白页面,再添加Cookie,最后访问国际版:
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.service import Service
from os import path

def web_driver():
    service = Service(log_path=path.devnull)
    options = Options()
    options.set_preference("general.useragent.override", my_user_agent)
    options.page_load_strategy = 'eager'
    driver = webdriver.Firefox(options=options,service=service)
    return driver

driver = web_driver()
# 先打开空白页面,确保能给目标域名添加Cookie
driver.get("about:blank")
# 添加偏好Cookie,键值请以你实际在浏览器中看到的为准
driver.add_cookie({
    "name": "preferred_country",
    "value": "int",
    "domain": ".soccerway.com",
    "path": "/",
    "secure": True,
    "httpOnly": False
})
# 现在访问国际版就不会跳转了
driver.get("https://int.soccerway.com/")

注意:Cookie的domain要设为.soccerway.com(带前缀点),这样int和br子域名都能识别;secure根据实际浏览器里的Cookie设置调整,HTTPS站点一般设为True。

2. 优化临时方案:等页面加载完再二次访问

如果暂时找不到准确的Cookie,也可以优化现有办法,等页面关键元素加载完成后再刷新,避免操作失效:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.service import Service
from os import path
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

def web_driver():
    service = Service(log_path=path.devnull)
    options = Options()
    options.set_preference("general.useragent.override", my_user_agent)
    options.page_load_strategy = 'eager'
    driver = webdriver.Firefox(options=options,service=service)
    return driver

driver = web_driver()
driver.get("https://int.soccerway.com/")
# 等待页面关键元素加载完成,比如顶部导航栏(元素ID根据实际页面调整)
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "page-header"))
)
# 再重新加载国际版
driver.get("https://int.soccerway.com/")

这样能确保第一次页面已经加载完成、网站记录了偏好后再刷新,不会因为加载慢出问题。

3. 设置浏览器首选语言为英语

部分网站会根据浏览器语言跳转对应版本,你可以在Firefox选项里把英语设为首选语言,降低跳转概率:

def web_driver():
    service = Service(log_path=path.devnull)
    options = Options()
    options.set_preference("general.useragent.override", my_user_agent)
    options.page_load_strategy = 'eager'
    # 设置浏览器首选语言为英语
    options.set_preference("intl.accept_languages", "en-US, en")
    driver = webdriver.Firefox(options=options,service=service)
    return driver

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:31:02