작성
·
2K
·
수정됨
1
User Agent Data 변경하는 법 강의에서 아래처럼 계속 오류가 생깁니다..
코드는 동일하게 입력한 것 같은데..
왜 그런 걸까요..?
selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: Invalid parameters
(Session info: chrome=114.0.5735.110)
import requests
from user_agents import parse
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import chromedriver_autoinstaller
import random, time, os
chromedriver_autoinstaller.install()
def make_user_agent(ua, is_mobile):
user_agent = parse(ua)
model = user_agent.device.model
platform = user_agent.os.family
platform_version = user_agent.os.version_string + ".0.0" # 모바일 기준이다
version = user_agent.browser.version[0]
print('version: ', version)
ua_full_version = user_agent.browser.version_string
print('ua_full_version: ', ua_full_version)
architecture = "x86"
print(platform, ' platform')
if is_mobile:
platform_info = "Linux armv8l"
else: # Window
platform_info = "Win32"
RET_USER_AGENT = {
"appVersion" : ua.replace("Mozilla/", ""),
"userAgent" : ua,
"platform" : f"{platform_info}",
"acceptLanguage": "ko-KR, kr, en-US, en",
"userAgentMetadata": {
"brands" : [
{'brand': 'Not.A/Brand', 'version': '8'},
{'brand': 'Chromium', 'version': '114'},
{'brand': 'Google Chrome', 'version':'114'}
],
"fullVersion": f"{ua_full_version}",
"platform" : platform,
"platformVersion": platform_version,
"architecture" : architecture,
"model": model,
"mobile": is_mobile
}
}
return RET_USER_AGENT
pc_device = ["1920,1440","1920,1200","1920,1080","1600,1200","1600,900",
"1536,864", "1440,1080","1440,900","1360,768"
]
mo_device = [
"360,640", "360,740", "375,667", "375,812", "412,732", "412,846",
"412,869", "412,892", "412,915"
]
width, height = random.choice(pc_device).split(",")
UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"
options = Options()
UA_Data = make_user_agent(UA, True)
# 랜덤 쿠키 생성하기
# ** 1~100의 숫자 이름의 폴더 밑에 쿠키를 생성해서 저장한다
rand_user_folder = random.randrange(1, 100)
userCookieDir = os.path.abspath(f"./cookies/{rand_user_folder }")
if os.path.exists(userCookieDir) == False:
print(userCookieDir, "폴더가 없어서 생성함")
os.mkdir(userCookieDir)
options.add_argument(f"user-data-dir={userCookieDir}")
options.add_argument(f'--user-agent={UA}')
options.add_argument(f'--window-size={width}, {height}')
driver = webdriver.Chrome(options=options)
driver.execute_cdp_cmd("Network.setUserAgentOverride", UA_Data)
driver.get('https://google.com')
driver.set_window_position(500, 500)
input()
답변 2
0
질문자님께서 첨부해주신 코드 작동하여 에러 내용 확인하였습다.
architecture 변수를 is_mobile 에서 초기화하고 계십니다
def make_user_agent 부분 아래 코드로 변경해주세요
def make_user_agent(ua,is_mobile):
user_agent = parse(ua)
model = user_agent.device.model
platform = user_agent.os.family
platform_version = user_agent.os.version_string + ".0.0"
version = user_agent.browser.version[0]
ua_full_version = user_agent.browser.version_string
architecture = "x86"
print(platform)
if is_mobile:
platform_info = "Linux armv8l"
architecture= ""
else: # Window
platform_info = "Win32"
model = ""
RET_USER_AGENT = {
"appVersion" : ua.replace("Mozilla/", ""),
"userAgent": ua,
"platform" : f"{platform_info}",
"acceptLanguage" : "ko-KR, kr, en-US, en",
"userAgentMetadata":{
"brands" : [
{"brand":" Not A;Brand", "version":"99"},
{"brand":"Google Chrome", "version":f"{version}"},
{"brand":"Chromium", "version":f"{version}"}
],
"fullVersion":f"{ua_full_version}",
"platform" :platform,
"platformVersion":platform_version,
"architecture":architecture,
"model" : model,
"mobile":is_mobile #True, False
}
}
return RET_USER_AGENT
0
안녕하세요, 인프런 AI 인턴입니다.
오류가 발생한 원인은 정확하게 알 수 없지만, 현재 사용하고 계신 크롬 브라우저 버전인 114.0.5735.110과 Selenium 버전 간의 호환성 문제일 가능성이 있습니다.
해결 방법으로는 크롬 브라우저 버전과 Selenium 버전을 맞추어 해보시는 것이 좋을 것 같습니다. 먼저 현재 크롬 브라우저의 버전을 확인하시고, 해당 버전과 호환되는 Selenium 버전을 다운로드하여 사용해보시면 됩니다.
또한 코드에서 오타 등의 문제도 발생할 수 있으니, 오타 등을 확인해보시기 바랍니다.
만약 해결되지 않는다면, 오류 내용을 자세하게 분석하여 원인을 찾을 수 있는 다른 방법을 찾아보시는 것이 좋겠습니다.
도움이 되었길 바랍니다. 감사합니다.