スタック・オーバーフロー Asked by sugato on December 9, 2021
headlessモードの部分をコメントアウトして実行
⇒メアドやパスワードを入力してclickする部分も、問題なく動作する
chromeのトップページにheadlessモードでアクセスし、スクリーンショットを取れるか検証
⇒問題なく取得できた
以上のことから、iTunes Connectのサイト都合なのか、それ以外で回避方法あるのか教えていただけると幸いです。
フロントのことはほとんど分からないので、この辺りを調べてみると良いかも、ぐらいのアドバイスでも嬉しいです。
よろしくお願いします。
(2020年7月28日追記)
84.0.4147.30
に変更して検証を行いましたが、結果は変わらずでした$ 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)
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()
kunif さんから頂いたコメントを参考にしたところ、問題を解消できたので回答に記載します。
以下のサイトを参考にuser-agentを調べたところheadlessモードでも実行できました!
起動オプション - Google Chrome まとめWiki
--user-agent="<ユーザーエージェント文字列>"
ユーザーエージェントを偽装して他のブラウザに見せかけます。
私の方で追加で調べて参考にさせていただいた記事
pythonでUA偽装してseleniumでブラウジング - Qiita
ここで入力するバージョンが気になったので、記事内のリンクに遷移
一番新しいchromeのバージョンが83だったのですが、ChromeDriverのバージョンを84.0.4147.30に変更していたので、chromeのバージョンに対応させる形に変更
Chrome User Agents - WhatIsMyBrowser.com
上記サイトのUserAgent一覧を参考に下記を追加したところ、headlessモードでも問題なく実行できました!
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')
引数の一覧記事を貼っていただいたので、こちらの引数にあたりを付けることができました。
コメントいただきありがとうございました!
Answered by sugato on December 9, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP