인프런 커뮤니티 질문&답변

초보개발자님의 프로필 이미지
초보개발자

작성한 질문수

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

2. User Agent Data 변경하는 법

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

작성

·

169

0

from user_agents import parse
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import random, time


# 한국에서 개통된 버전은 이런 데이터 들이 필요하다.
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"

    if is_mobile:
        # 모바일 버전
        platform_info = "Linux armv81"
        architectur=""
    else:
        # PC 버전
        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", "bersion":f"{version}"},
                {"brand":"Chromium", "version":f"{version}"}
            ],
            "fullVersion":f"{ua_full_version}", 
            "platform":platform,
            "platformVersion":platform_version,
            "architectur":architecture,
            "model" : model,
            "mobile":is_mobile  # True, False
        }
    }
    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(mo_device).split(",")
print(width, height)
UA = "Mozilla/5.0 (Linux; Android 9; Mi A2 Lite Build/PKQ1.180917.001; AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/127.0.0.0 Safari/537.36'"
options = Options()
UA_Data = make_user_agent(UA, True)
print(UA_Data)

#UserAgent 속이기
options.add_argument(f"--user-agent={UA}")
options.add_argument(f"--window-size={width}, {height}")
options.add_argument("--disable-blink-features=AutomationControlled")
driver = webdriver.Chrome(options=options)

driver.execute_cdp_cmd("Network.setUserAgentOverride",UA_Data)

driver.get('https://www.google.com')

input()

--

아래 코드가 작동하지 않습니다.
이유가 뭘까요?

driver.execute_cdp_cmd("Network.setUserAgentOverride",UA_Data)
image.png

 

[ 버전 ]

python 3.10.10

selenium 4.13.0

 

답변 2

0

중간에 userAgentMetaData => userAgentMetadata까지 변경하니까 드디어 작동되네요. 이거 오타 한개라도 있으면 작동안되네요. 아오

 

0

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

초보개발자님, 질문하신 driver.execute_cdp_cmd("Network.setUserAgentOverride", UA_Data) 코드가 작동하지 않는 문제에 대해 여러 원인이 있을 수 있지만, 가장 먼저 확인할 점은 UA_Data의 구조와 execute_cdp_cmd 메서드의 사용 방법입니다. 이와 관련하여 질문자님이 공유하신 스크립트에서 몇 가지 주목해야 할 부분이 있습니다.

  1. 스크립트 상의 오탈자: 코드의 userAgentMetaData 부분에서 architectureversion 키워드에 오타가 있습니다 (예: architecturbersion). 이러한 오탈자는 코드 실행시 예상치 못한 결과를 초래할 수 있습니다.

  2. 사용자 에이전트 설정 관련 오류: Network.setUserAgentOverride 명령은 Chrome DevTools Protocol을 활용해 사용자 에이전트를 재정의하는 데 사용하는데, 제공된 UA_Data 객체가 올바른 형식과 데이터를 포함하고 있는지 확인해야 합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 질문하신 내용과 직접적으로 관련된 자료는 다음과 같습니다:

이 답변은 질문자님이 직면하신 문제의 유사한 상황을 다루고 있으며, 코드 수정에 도움이 될 수 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

초보개발자님의 프로필 이미지
초보개발자

작성한 질문수

질문하기