작성
·
167
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)
[ 버전 ]
python 3.10.10
selenium 4.13.0
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다.
초보개발자님, 질문하신 driver.execute_cdp_cmd("Network.setUserAgentOverride", UA_Data)
코드가 작동하지 않는 문제에 대해 여러 원인이 있을 수 있지만, 가장 먼저 확인할 점은 UA_Data
의 구조와 execute_cdp_cmd
메서드의 사용 방법입니다. 이와 관련하여 질문자님이 공유하신 스크립트에서 몇 가지 주목해야 할 부분이 있습니다.
스크립트 상의 오탈자: 코드의 userAgentMetaData
부분에서 architecture
와 version
키워드에 오타가 있습니다 (예: architectur
및 bersion
). 이러한 오탈자는 코드 실행시 예상치 못한 결과를 초래할 수 있습니다.
사용자 에이전트 설정 관련 오류: Network.setUserAgentOverride
명령은 Chrome DevTools Protocol을 활용해 사용자 에이전트를 재정의하는 데 사용하는데, 제공된 UA_Data
객체가 올바른 형식과 데이터를 포함하고 있는지 확인해야 합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 질문하신 내용과 직접적으로 관련된 자료는 다음과 같습니다:
UA_Data
구조와 관련된 구체적인 수정 사항을 제안하고 있습니다. 해당 답변에서는 architecture
변수 등의 올바른 초기화 방법과, execute_cdp_cmd
메서드 사용 시 주의해야 할 점들에 대해서 설명하고 있습니다.이 답변은 질문자님이 직면하신 문제의 유사한 상황을 다루고 있으며, 코드 수정에 도움이 될 수 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.