

### 検証したこと

  * headlessモードの部分をコメントアウトして実行  
⇒メアドやパスワードを入力してclickする部分も、問題なく動作する

  * chromeのトップページにheadlessモードでアクセスし、スクリーンショットを取れるか検証  
⇒問題なく取得できた

以上のことから、iTunes Connectのサイト都合なのか、それ以外で回避方法あるのか教えていただけると幸いです。

フロントのことはほとんど分からないので、この辺りを調べてみると良いかも、ぐらいのアドバイスでも嬉しいです。

よろしくお願いします。

(2020年7月28日追記)

  * chromedriver-binaryとChromeDriverのバージョンを、`84.0.4147.30`に変更して検証を行いましたが、結果は変わらずでした

### 環境

  * windows10
  * python : 3.8
  * Google Chrome：バージョン : 84.0.4147.89（Official Build） （64 ビット）
  * chromedriver-binary : 83.0.4103.14
  * ChromeDriver : 83.0.4103.14  
<https://chromedriver.chromium.org/downloads>

  * selenium : 3.141.0

### headlessモードで実行した際のエラーメッセージ

[code]

    $ python save_ss_headless.py
    
    DevTools listening on ws://127.0.0.1:52996/devtools/browser/16df0db5-7204-4ce7-ac85-fb9c8dff6275
    [0723/173124.264:INFO:CONSOLE(2)] "Metrics config: No config provided via delegate or fetched via init(), using default/cached config values.", source: https://itunesconnect.apple.com/static/compiled/js/itunesconnect.min.13f6834e19c35e8917d9.js (2)
    [0723/173124.267:INFO:CONSOLE(2)] "Metrics config: No config provided via delegate or fetched via init(), using default/cached config values.", source: https://itunesconnect.apple.com/static/compiled/js/itunesconnect.min.13f6834e19c35e8917d9.js (2)
    [0723/173124.275:INFO:CONSOLE(2)] "mt-perfkit: unable to apply time offsets: environment.timeOriginOffset() returned a non-number value", source: https://itunesconnect.apple.com/static/compiled/js/itunesconnect.min.13f6834e19c35e8917d9.js (2)
    [0723/173124.278:INFO:CONSOLE(2)] "mt-perfkit: unable to apply time offsets: environment.timeOriginOffset() returned a non-number value", source: https://itunesconnect.apple.com/static/compiled/js/itunesconnect.min.13f6834e19c35e8917d9.js (2)
    [0723/173124.281:INFO:CONSOLE(2)] "mt-perfkit: unable to apply time offsets: environment.timeOriginOffset() returned a non-number value", source: https://itunesconnect.apple.com/static/compiled/js/itunesconnect.min.13f6834e19c35e8917d9.js (2)
    [0723/173124.284:INFO:CONSOLE(2)] "mt-perfkit: unable to apply time offsets: environment.timeOriginOffset() returned a non-number value", source: https://itunesconnect.apple.com/static/compiled/js/itunesconnect.min.13f6834e19c35e8917d9.js (2)
    [0723/173124.288:INFO:CONSOLE(2)] "mt-perfkit: unable to apply time offsets: environment.timeOriginOffset() returned a non-number value", source: https://itunesconnect.apple.com/static/compiled/js/itunesconnect.min.13f6834e19c35e8917d9.js (2)
    [0723/173125.680:INFO:CONSOLE(2)] "Metrics config: No config provided via delegate or fetched via init(), using default/cached config values.", source: https://itunesconnect.apple.com/static/compiled/js/itunesconnect.min.13f6834e19c35e8917d9.js (2)
    
[/code]

### 実行コード

[code]

    import time
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.chrome.options import Options
    from selenium.common.exceptions import TimeoutException
    import chromedriver_binary
    import os
    
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')
    # options.add_argument('--no-sandbox')
    # options.add_argument('--disable-gpu')
    # options.add_argument('--incognito')
    # options.add_argument("window-size=1920,1080")
    
    mail_account = '設定したメールアドレス'
    password = '設定したパスワード'
    
    driver = webdriver.Chrome(executable_path='chromedriver', options=options)
    base_url = 'https://itunesconnect.apple.com/login'
    # base_url = 'http://www.google.com/'
    driver.get(base_url)
    time.sleep(10) 
    # log配下にスクリーンショットを保存
    ss_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "./log/")
    driver.save_screenshot(ss_dir + 'app_store_login_page' + ".png")
    # print('1/5')
    # iframe = driver.find_element_by_css_selector('#aid-auth-widget-iFrame')
    # driver.switch_to.frame(iframe)
    # print ("2/5")
    # time.sleep(5)
    # driver.find_elements_by_css_selector("#account_name_text_field")[0].send_keys(mail_account)
    # driver.find_elements_by_css_selector("#sign-in")[0].click()
    # print ("3/5")
    # time.sleep(5)
    # driver.find_elements_by_css_selector("#password_text_field")[0].send_keys(password)
    # driver.find_elements_by_css_selector('#sign-in')[0].click()
    # time.sleep(5)
    # print ("4/5")
    driver.close()
    driver.quit()
    
[/code]


CC BY-SA 4.0
2020-07-23T08:53:00.403
68858
2020-07-29T16:40:27.573
2020-07-28T05:53:15.103
41218
41218
question
python web-scraping selenium
seleniumのheadlessモードを使用した時に、iTunes Connectのログインページのスクショを取得したい


kunif さんから頂いたコメントを参考にしたところ、問題を解消できたので回答に記載します。

以下のサイトを参考にuser-agentを調べたところheadlessモードでも実行できました！

[起動オプション - Google Chrome まとめWiki](http://chrome.half-
moon.org/43.html#obcd30eb)

> ### \--user-agent="＜ユーザーエージェント文字列＞"
>
> ユーザーエージェントを偽装して他のブラウザに見せかけます。

私の方で追加で調べて参考にさせていただいた記事

[pythonでUA偽装してseleniumでブラウジング -
Qiita](https://qiita.com/jima262/items/967403e2f65f9acacdb8)

ここで入力するバージョンが気になったので、記事内のリンクに遷移  
一番新しいchromeのバージョンが83だったのですが、ChromeDriverのバージョンを84.0.4147.30に変更していたので、chromeのバージョンに対応させる形に変更

[Chrome User Agents -
WhatIsMyBrowser.com](https://developers.whatismybrowser.com/useragents/explore/software_name/chrome/)

上記サイトのUserAgent一覧を参考に下記を追加したところ、headlessモードでも問題なく実行できました！

[code]

    options.add_argument('--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36')
    
[/code]

引数の一覧記事を貼っていただいたので、こちらの引数にあたりを付けることができました。

コメントいただきありがとうございました！


CC BY-SA 4.0
2020-07-29T14:05:23.700
69100
2020-07-29T16:40:27.573
2020-07-29T16:40:27.573
3060
41218
68858
answer