17

これによると、ヘッダーを変更できるようになりました。Atm PhantomJS webdriver の Accept-Language を変更する必要があります。このコードは機能しません

DesiredCapabilities.PHANTOMJS['phantomjs.page.customHeaders.Accept-Language'] = 'ru-RU'
driver = webdriver.PhantomJS()

ヘッダーを送信するように Phantomjs を構成することは可能ですか? どこでかは気にしません: Ghostdriver、phantomjs、または phantomjs-webdriver の内部。

4

2 に答える 2

32

PhantomJSの最新バージョン ( 1.9.1 ) は、2013 年 6 月 5 日にリリースされました。プル リクエストは2013 年 6 月 23 日にマージされます。

PhantomJS の 1.9.1 バージョンを使用している場合、カスタム ヘッダーは機能しません。

自分で phantomjs をビルドするか、phantomjs がゴーストドライバーの変更をマージして新しいバージョンをリリースするまで待つ必要があります。

  • PhantomJS リポジトリのクローン
  • Ghostdriver リポジトリのクローンを作成する
  • Ghostdriver/src/* を phantomjs/src/ghostdriver に再帰的にコピーします
  • ファントムjsをビルドする

新しくビルドしたphantomjsを使用すると、次の結果が得られました。

from selenium import webdriver

webdriver.DesiredCapabilities.PHANTOMJS['phantomjs.page.customHeaders.Accept-Language'] = 'ru-RU'
driver = webdriver.PhantomJS()
driver.get('http://httpbin.org/headers')
print(driver.page_source)

...
{
  "headers": {
    "Connection": "close",
    "Host": "httpbin.org",
    "Accept-Encoding": "gzip",
    "Accept-Language": "ru-RU",
    "User-Agent": "Mozilla/5.0 (Unknown; Linux i686) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.10.0 (development) Safari/534.34",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
  }
 ...

アップデート

PhantomJS 1.9.2+を使用します。

于 2013-07-25T15:32:47.090 に答える
2

Selenium phantomjs ですべてのヘッダー、ウィンドウ サイズ、およびプロキシを設定する完全な例を作成します。

from selenium import webdriver

def init_phantomjs_driver(*args, **kwargs):

    headers = { 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        'Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0',
        'Connection': 'keep-alive'
    }

    for key, value in headers.iteritems():
        webdriver.DesiredCapabilities.PHANTOMJS['phantomjs.page.customHeaders.{}'.format(key)] = value

    webdriver.DesiredCapabilities.PHANTOMJS['phantomjs.page.settings.userAgent'] = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36'

    driver =  webdriver.PhantomJS(*args, **kwargs)
    driver.set_window_size(1400,1000)

    return driver


def main():
    service_args = [
        '--proxy=127.0.0.1:9999',
        '--proxy-type=http',
        '--ignore-ssl-errors=true'
        ]

    driver = init_phantomjs_driver(service_args=service_args)

    driver.get('http://cn.bing.com')

ノート:

userAgentphantomjs.page.settings.userAgentの代わりに設定されますphantomjs.page.customHeaders

于 2016-10-14T07:41:06.343 に答える