You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
3.3 KiB
90 lines
3.3 KiB
|
|
from browsermobproxy import Server |
|
from selenium import webdriver |
|
import time |
|
import os |
|
from selenium.webdriver.chrome.options import Options |
|
|
|
# configuration |
|
#browsermobPath = './browsermob-proxy-2.1.4/bin/browsermob-proxy' |
|
browsermobPath = 'D:\\fyf\\tool\\browsermob-proxy-2.1.4\\bin\\browsermob-proxy' |
|
username = '972360526' |
|
password = '61241623FYFzwq' |
|
tokenFile = os.getcwd()+'./token.conf' |
|
cookiesFile = os.getcwd()+'./cookie.conf' |
|
chromedriver = os.getcwd()+"./chromedriver.exe" |
|
|
|
def writeResult(filePath, fileContext): |
|
if os.path.exists(filePath): |
|
os.remove(filePath) |
|
f = open(filePath, 'w') |
|
f.write(fileContext) |
|
print(fileContext) |
|
f.close() |
|
return |
|
|
|
def GetCookieAndToken(): |
|
server = Server(browsermobPath) |
|
server.start() |
|
proxy = server.create_proxy() |
|
profile = webdriver.FirefoxProfile() |
|
profile.set_proxy(proxy.selenium_proxy()) |
|
|
|
chrome_options = Options() |
|
|
|
chrome_options.add_argument('--ignore-certificate-errors') |
|
chrome_options.add_argument('--proxy-server={0}'.format(proxy.proxy)) |
|
|
|
os.environ["webdriver.chrome.driver"] = chromedriver |
|
|
|
driver = webdriver.Chrome(chromedriver,chrome_options=chrome_options) |
|
|
|
#driver = webdriver.PhantomJS(firefox_profile=profile,executable_path = geckodriverPah) |
|
|
|
proxy.new_har("bugly", options={"captureHeaders":True}) |
|
|
|
driver.get("https://bugly.qq.com/v2/") |
|
time.sleep(3) |
|
driver.find_element_by_class_name("login_btn").click() |
|
time.sleep(3) |
|
driver.switch_to.frame("ptlogin_iframe") |
|
time.sleep(3) |
|
driver.find_element_by_id("switcher_plogin").click() |
|
time.sleep(3) |
|
driver.find_element_by_id("u").send_keys(username) |
|
time.sleep(3) |
|
driver.find_element_by_id("p").clear() |
|
driver.find_element_by_id("p").send_keys(password) |
|
time.sleep(3) |
|
driver.find_element_by_id("login_button").click() |
|
time.sleep(10) |
|
driver.find_element_by_xpath('//*[@id="root"]/div/div/div[2]/div/div/div/div[2]/table/tbody/tr/td[1]/div/div[1]/img').click() |
|
time.sleep(3) |
|
driver.find_element_by_xpath('//*[@id="root"]/div/div/div[2]/div/div[1]/div[2]/ul[2]/li/a').click() |
|
time.sleep(10) |
|
strCookies = "" |
|
strToken = "" |
|
cookies = driver.get_cookies() |
|
requestDict = proxy.har['log']['entries'] |
|
|
|
for index in range(len(requestDict)): |
|
for k in requestDict[index]: |
|
if k == "request" and requestDict[index][k]['url'].find('v2/issueList')>=0: |
|
for inn in range(len(requestDict[index][k]['headers'])): |
|
for ik in requestDict[index][k]['headers'][inn]: |
|
if ik == 'name' and requestDict[index][k]['headers'][inn][ik]=='X-token': |
|
strToken = requestDict[index][k]['headers'][inn]['value'] |
|
if ik == 'name' and requestDict[index][k]['headers'][inn][ik]=='Cookie' and requestDict[index][k]['headers'][inn]['value'].find('pt2gguin')>=0 and requestDict[index][k]['headers'][inn]['value'].find('bugly_session')>=0 and requestDict[index][k]['headers'][inn]['value'].find('referrer')>=0: |
|
strCookies = requestDict[index][k]['headers'][inn]['value'] |
|
if strToken!="" and strCookies!="": |
|
break; |
|
|
|
|
|
writeResult(tokenFile,strToken) |
|
writeResult(cookiesFile,strCookies) |
|
|
|
server.stop() |
|
|
|
if __name__ == '__main__': |
|
GetCookieAndToken() |
|
|
|
|