HAR响应中没有标题

时间:2015-07-28 17:45:09

标签: python-2.7 selenium-webdriver browsermob har browsermob-proxy

我解析网站“http://ok.ru”。要从post请求中获取数据,我需要发送一个由Javascript在网站上生成的特定令牌,此令牌包含在头文件中。

所以我想也许一个解决方案是打开网站,让它生成令牌,抓住标题就是这样。

可以实现Java脚本的一个工具是Selenium,但要获取我需要使用brosermob-proxy(或等效的)头文件。那就是我被困住的地方。

没有标题作为回应,我无法弄明白。也许有人使用浏览器可以看到什么是错的?我也很高兴听到我的任务的另一个解决方案。代码本身如下:

from browsermobproxy import Server
from selenium import webdriver
from ast import literal_eval
import json, os
os.chdir('C:/browsermob-proxy-2.1.0-beta-2/bin')

server = Server()
server.start()
proxy = server.create_proxy()
profile = webdriver.FirefoxProfile()
profile.set_proxy(proxy.selenium_proxy())
driver = webdriver.Firefox(firefox_profile=profile)
proxy.new_har('test')
driver.get('http://ok.ru')
driver.find_element_by_xpath('//input[@name="st.email"]').send_keys('****@****.com')
driver.find_element_by_xpath('//input[@name="st.password"]').send_keys('****')
driver.find_element_by_xpath(u'//input[contains(@value,"Log in")]').click()
result = literal_eval(json.dumps(proxy.har, ensure_ascii=False))
driver.close()

for entry in result['log']['entries']:
    if len(entry['response']['headers']) > 0:
        print entry['response']['headers']

1 个答案:

答案 0 :(得分:4)

The answer turned to be easy: just to add options to new_har:

proxy.new_har('test', options={'captureHeaders': True})

However, there is no token in headers, which is a new puzzle to me...