inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬 셀레니움 고급편 (python selenium - 크롤링, 크롤러)

3. CDP CMD로 Webdriver를 완벽하게 모바일 디바이스로 인식시키는 방법

User Agent Data 변경하는 법 강의에서 아래처럼 계속 오류가 생깁니다..

2342

packet

작성한 질문수 1

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()



웹-크롤링 selenium cdp

답변 2

0

김지유

질문자님께서 첨부해주신 코드 작동하여 에러 내용 확인하였습다.
architecture 변수를 is_mobile 에서 초기화하고 계십니다


image

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 인턴

안녕하세요, 인프런 AI 인턴입니다.

오류가 발생한 원인은 정확하게 알 수 없지만, 현재 사용하고 계신 크롬 브라우저 버전인 114.0.5735.110과 Selenium 버전 간의 호환성 문제일 가능성이 있습니다.

해결 방법으로는 크롬 브라우저 버전과 Selenium 버전을 맞추어 해보시는 것이 좋을 것 같습니다. 먼저 현재 크롬 브라우저의 버전을 확인하시고, 해당 버전과 호환되는 Selenium 버전을 다운로드하여 사용해보시면 됩니다.

또한 코드에서 오타 등의 문제도 발생할 수 있으니, 오타 등을 확인해보시기 바랍니다.

만약 해결되지 않는다면, 오류 내용을 자세하게 분석하여 원인을 찾을 수 있는 다른 방법을 찾아보시는 것이 좋겠습니다.

도움이 되었길 바랍니다. 감사합니다.

reg.get("http://www.naver.com")

0

28

2

크롤링, 영상을 따라해도 제미나에게 물어봐도 안되요

0

33

1

네이버 로그인시 접근 방식에 대해 궁금증이 생겼습니다.

0

435

1

모바일 해상도와 userAgents 정보

0

209

1

execute_cdp_cmd 코드가 작동하지 않습니다.

0

641

2

move_to_bottom 스크롤 부분

0

386

2

강의자료 어디서볼까요?

0

383

2

1강에서 localhost:4000 접속

0

424

2

uc를사용할때 유저 에이전트 변경이 불가능합니다.

0

502

2

강의 코드는 어디서 볼 수 있나요?

0

450

2

문서에서 어떤걸 찾아야 하고 어떻게 읽어야하는지도 알려주시면 좋겠습니다

0

293

2

ch 2-2 User Agent Data 변경하는법) 내 눈으로 본것만 믿읍시다 자막 부분 이해가 안갑니다.

0

472

2

게임 매크로에서 영감얻으셨다는 영상보고

0

828

2

새로운 탭에서 설정 유지

0

458

2

mouse listener 관련해서 질문 드립니다.

1

380

2

random_move 함수 내용에 대하여 질문 드립니다.

0

296

2

5.Bot Detection 피하기(고급편) 질문입니다.

0

559

1

문의 드립니다.

1

425

2

맥스터치포인트 "0"으로 변경되요?

1

650

3

액션체인 부분.. 스크롤..

1

694

1

undetected_chromedriver 사용시 widow-size 가 적용이 안됩니다.

0

1625

2

Chrome Network로 연결후 Packet 을 분석하는 방법

0

935

1

몇가지 문의사항이 있어서 올립니다

1

639

1

안녕하세요. 강의의 미흡한점이 있어 문의드립니다.

1

675

1