from bnet_retriever.utils.cookies import BnetCookieJar from bnet_retriever.utils import serialize import requests import getpass from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By import time import ipdb url = 'https://www.battlenet.com.cn/login/zh/?ref=https://www.battlenet.com.cn/oauth/authorize?client_id%3Dnetease-hearthstone-site%26response_type%3Dcode%26scope%3Daccount.basic%2Baccount.full%26redirect_uri%3Dhttps%253A%252F%252Faccount.bnet.163.com%252Fbattlenet%252Flogin%253Finner_client_id%253Dow%2526inner_redirect_uri%253Dhttps%25253A%25252F%25252Fow.blizzard.cn%25252Fbattlenet%25252Flogin%25253Fredirect_url%25253Dhttps%2525253A%2525252F%2525252Fow.blizzard.cn%2525252Fcareer%2525252F&app=oauth' tup = ('accountName', 'password') username = input('Your BNet Username:') password = getpass.getpass('Your BNet Password:') opts = Options() opts.add_argument('--window-size=375,812') opts.add_argument('--window-position=0,0') browser = webdriver.Chrome(options=opts) browser.get(url) submit_btn = WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.ID, 'submit'))) browser.find_element_by_id('accountName').clear() browser.find_element_by_id('password').clear() browser.find_element_by_id('accountName').send_keys(username) browser.find_element_by_id('password').send_keys(password) submit_btn.click() time.sleep(2) keys = {key for key, *_ in BnetCookieJar._template} browser.get('http://163.com') cookies = browser.get_cookies() final = {i['name']: i['value'] for i in cookies if i['name'] in keys} browser.get('https://shop.battlenet.com.cn/zh-cn') cookies = browser.get_cookies() final.update({i['name']: i['value'] for i in cookies if i['name'] in keys}) print('Your Login token is:') print(serialize.tostr(final))