我写了以下代码:
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?
从驱动程序选项中删除烧毁的 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 的一致性: