Selenium获取请求信息

前言

​ 在获取facebook analytics数据时,抓取到的请求需要携带token,且具有时效性。

解决办法

  1. JS逆向分析token生成过程及逻辑(难度较大,尝试无果后放弃)
  2. 使用selenium模拟请求,将过程交给浏览器,只需要获取结果

实现代码

from time import sleep
from selenium import webdriver

option = webdriver.ChromeOptions()

# 使用本地cookie, 运行时需关闭已打开的浏览器
option.add_argument(r'--user-data-dir=C:\...\User Data')
option.add_argument('--profile-directory=Default')

browser = webdriver.Chrome(options=option)
browser.get("https://www.facebook.com/analytics/")
sleep(10)

# 获取selenium执行了那些请求的关键
test = browser.execute_script("var performance = window.performance || window.mozPerformance || window.msPerformance || window.webkitPerformance || {}; var network = performance.getEntries() || {}; return network;")

access_token = ""
for item in test:
  if "access_token" in item['name']:
    access_token = item['name'].split("=")[-1]
print(access_token)

browser.quit()