前言
在获取facebook analytics数据时,抓取到的请求需要携带token,且具有时效性。
解决办法
- JS逆向分析token生成过程及逻辑(难度较大,尝试无果后放弃)
- 使用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()