无头饼干中的硒差异

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

我写了以下代码:

def retrieve_cookies(self):
        options = Options()
        options.headless = True

        # Create driver based on 'geckodriver.exe', keep in mind that the Linux driver should be downloaded for Linux OS'
        driver = webdriver.Firefox(options=options, executable_path='api/common/geckodriver.exe')
        driver.get("https://betwinner.com/us/")

        # Wait 3 seconds to load the home page of BetWinner
        sleep(5)

        # Find and CLick 'Login' button
        driver.find_element_by_class_name('loginDropTop_con').click()

        # Populate form
        driver.find_element_by_id('auth_id_email').send_keys('')
        driver.find_element_by_id('auth-form-password').send_keys('')

        # Submit form
        driver.find_element_by_class_name('auth-button').click()

        # Wait 5 seconds to complete the login process
        sleep(5)

        # Store cookies in dict
        self.cookies = { c["name"]: c["value"] for c in driver.get_cookies() }

        # Close browser, it is not needed anymore
        driver.quit()

全神贯注地运行此代码时,我从中得到以下 cookie:

{'auid': 'XXX', '_ym_uid': 'XXX', '_ym_d': '1597607874', 'ggru': '195', 'bonus_choice': '0', 'blocks': '1%2C1%2C1%2C1%2C1%2C1%2C1%2C1', 'completed_user_settings': 'true', '_ym_isad': '2', '_gat_gtag_UA_131605460_1': '1', 'sh.session_be98639c': '307cda20-b806-42a8-93b4-9027bcbb7740', 'SESSION': 'XXX', 'tzo': '2', 'ua': '208765015', 'uhash': 'bfad09b6f9bff01beb35cb97afc9ebee', 'cur': 'EUR', 'activeid': '208765015', 'act': '00000101', 'asia_view': '0', 'coefview': '0', 'indicator': '1', 'typeBetNames': 'short', 'compact_vid_off': '0', 'lite_version': '0', 'is_rtl': '1', 'disable_line_express': '0', 'disable_live_express': '0', 'colorChange': '0', 'autoSummSel_off': '0', 'only_betting': '0', 'show_number_game': '0', 'font_size': 'f-s_normal', 'new_view_score': 'false', 'new_view_custom_group_765': 'false', 'extended_scores_dashboard_off': '0', 'game_cols_count': '2', 'show_popup_lucky_wheel': '0', 'hide_slider_top_games': '0', 'coupon_logo': '0', 'statistic_in_modal': '0', 'when_change_coef': '2', 'automax': 'false', 'is_goldenbet_enabled': '0', 'side_video_setting': '0', 'disallow_sport': '', '_glhf': '1597625662', 'right_side': 'right', 'visit': '2-88a257be578fab42c494b98bc8258a81', '_ym_visorc_48347336': 'w', '_ga': 'GA1.2.132738407.1597607874', '_gid': 'GA1.2.1426998216.1597607874', 'lng': 'us', 'flaglng': 'us'}

当我无头运行它时,我得到以下cookie:

{'SESSION': 'XXX', 'visit': '1-b9f9fcb79e68312cefda00309791dc7e', 'typeBetNames': 'full', 'coefview': '0', 'indicator': '1', 'auid': 'U5PMHF85j/BU9ItIBRDoAg==', 'tzo': '2', 'ggru': '223', '_ym_uid': '1597607925529773283', '_ym_d': '1597607925', 'bonus_choice': '0', 'blocks': '1%2C1%2C1%2C1%2C1%2C1%2C1%2C1', 'completed_user_settings': 'true', '_ym_isad': '2', '_ga': 'GA1.2.1486114340.1597607927', '_gid': 'GA1.2.18345131.1597607927', '_ym_visorc_48347336': 'w', '_gat_gtag_UA_131605460_1': '1', 'sh.session_be98639c': 'a721d0cc-2726-497d-8f90-4ca05f9b99a1', 'lng': 'us', 'flaglng': 'us', '_grant_1597625695': 'ay3767122', '_glhf': '1597625711'}

如何在无头运行浏览器时获得与有头运行时相同的 cookie?

python selenium
1个回答
0
投票

从驱动程序选项中删除烧毁的 user_agent,在我的例子中,我有 mozila,也许现在的原因是因为我正在废弃的网页与 chrome 的行为不同。

    user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 " \
                 "(KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36"

如果我说实话,答案是由Chatgpt指导的,所以这里是chatgpt提示的完整答案,希望如果我的解决方案不起作用,以下一些选项会对您有所帮助。

在无头模式下运行浏览器时,与在有头模式下运行相比,网站的呈现方式和 JavaScript 的执行方式可能会有所不同。这有时会导致网站行为的差异,包括 cookie 的设置方式。

您可以采取一些步骤来尝试确保在无头和有头模式下检索到的 cookie 的一致性:

  1. 用户代理:确保无头模式和有头模式下使用的用户代理相同。有时,网站的行为会因用户代理的不同而有所不同,因此确保此处的一致性可能会有所帮助。
  2. 等待时间:增加某些操作后的等待时间,例如单击登录按钮后或提交表单后。与有头浏览器相比,无头浏览器可能需要更长的时间来处理某些操作。
  3. 页面加载策略:调整页面加载策略。在无头模式下,您可能需要等待更长的时间才能使某些元素变得可交互或可见。您可以尝试使用显式等待(例如 WebDriverWait)来等待特定元素出现,然后再继续。
  4. 日志记录:在无头模式下运行时,检查浏览器控制台中是否有任何错误或警告。可能存在 JavaScript 错误或其他影响网站行为的问题。
  5. 视口大小:显式设置视口大小以确保无头模式和有头模式之间的一致性。您可以使用 driver.set_window_size(width, height) 来设置视口大小。
  6. 稳定性:确保网站稳定,并且不会发生可能影响其运行之间行为的更改。
  7. 检查动态内容:有时,网站会根据用户交互或其他因素加载动态内容。确保在尝试检索 cookie 之前加载所有必要的内容。 通过进行这些调整并确保无头模式和有头模式之间浏览器的环境和行为的一致性,您应该能够在检索的 cookie 方面获得一致的结果。
© www.soinside.com 2019 - 2024. All rights reserved.