机器人检测在返回之前更改 JSON 数据的值,有什么想法可以解决这个问题吗?

问题描述 投票:0回答:1

可能可能性不大,但我正在尝试使用 Selenium-Profiles 来抓取凯悦酒店的网站以获取可用积分。

https://www.hyatt.com/shop/service/rooms/roomrates/dpsas?spiritCode=dpsas&rooms=1&adults=2&checkinDate=2024-01-05&checkoutDate=2024-01-07&kids=0

Selenium-Profiles 在过去几周一直表现出色,但昨天,该网站更改了其机器人检测,因此 Selenium-Profiles 现在返回的数据中某些字段更改为 null。

Selenium-Profiles 页面加载: lowestPointValue: null

手动页面加载: lowestPointValue: 40000

以前有人见过这样的事情吗?关于如何解决这个问题有什么建议吗?

这是我的 Selenium 配置文件初始化:

    profile = json.loads(os.getenv('SELENIUM_PROFILE_3'))
    
    profile["proxy"] = {
        "proxy": super_proxy_url
    }
    
    options = ChromeOptions()
    options.add_argument("--headless")
    options.add_argument("--no-sandbox")
    options.add_argument("--disable-dev-shm-usage")
    driver = Chrome(profile=profile, options=options,uc_driver=False,injector_options=True, seleniumwire_options=True)
    driver.execute_cdp_cmd('Runtime.disable',{})
    injector = driver.profiles.injector

我尝试过更新我的代理配置文件、打开/关闭不同的配置以及使用 VPN/代理,但没有成功。

selenium-webdriver web-scraping selenium-chromedriver web-crawler
1个回答
0
投票

如果机器人检测是问题所在,那么 SeleniumBase 的 UC 模式会让您看起来像人类一样访问该网站:

from seleniumbase import Driver

driver = Driver(uc=True, headless=True)
driver.get("https://prenotami.esteri.it/Services/Booking/2391")
# ...
driver.quit()
© www.soinside.com 2019 - 2024. All rights reserved.