4

Web サイト ' http://ok.ru 'を解析します。投稿リクエストからデータを取得するには、Web サイトで Javascript によって生成された特定のトークンを送信する必要があり、このトークンはヘッダーに含まれています。

だから私はおそらく1つの解決策はウェブサイトを開いてトークンを生成させ、ヘッダーをつかむことだと思った.

Java スクリプトを実装できるツールの 1 つは Selenium ですが、ヘッダーを取得するには brosermob-proxy (または同等のもの) を使用する必要があります。それが私が立ち往生しているところです。

応答にヘッダーがなく、わかりません。browsermob を扱ったことのある人なら、何が問題なのかわかるでしょうか? また、私の仕事に対する別の解決策を聞いてうれしいです。コード自体は次のとおりです。

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']
4

1 に答える 1

5

答えは簡単になりました: new_har にオプションを追加するだけです:

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

ただし、ヘッダーにトークンがありません。これは私にとって新しいパズルです...

于 2015-07-28T22:24:58.053 に答える