샐러리움 모바일 상태에서 네이버 로그인하려는데 [1번: 네이버 메인화면에서 바로 로그인 사이트 주소로 타이핑 하여 들어가는 방법]과 [2번 : 네이버 모바일에서 하나하나 클릭하는 코드를 만들어서 로그인 화면으로 들어가는 방법] 2가지 방식을 알게 되었습니다. 그런데 1번 방법으로 접근할 경우 iP보안 란이 뜹니다. 내용을 읽어보면 이걸 무시하고 진행하기 보다는 해제한 상태에서 진행하는 것이 사전에 문제를 차단할 수 있는 방법으로 보입니다. 반면 2번에는 일너 ip보안 창이 나오지 않는 것을 알 수 있습니다. (생략 되는 건지 어떤건지는 모르겠습니다 ) 그렇다면 1번의 방식으로 접근하는 것이 크롤링을 덜 차단당 할 수 있는 안전한 방법인가요? 1. https://nid.naver.com/nidlogin.login?mode=form&url=https://m.naver.com https://nid.naver.com/nidlogin.login?svctype=262144&url=https%3A%2F%2Fm.naver.com%2Fna%2F
수강완료 후 다시보고 있는데 userAgent 정보에 있는 모바일 디바이스 정보와 디바이스에 맞는 동일 해상도로 크롤리 작업을 할 필요는 없을까 하는 의문이 듭니다. 예를 들어 a52s라는 모바일 디바이스로 크롤링을 한다면 해상도 2400 x 1080으로 화면을 띄우고 작업해여 하지 않나 라는거죠 포털 사이트에서 모바일 디바이스와 동일하지 않는 해상도로 작업하는 계정을 벤하지 않을까 걱정이 됩니다. ㅜㅜ
scroll_by_amount로 바뀌면서 시작하는 위치를 설정할 수 없게 된 것 같은데, 만약 인피니티 스크롤 하려고 할 때, 해당 마우스 포인터가 특정한 섹션에 있어야지 인피티니 스크롤을 할 수 있는 페이지라면 어떻게 설정을 해야될까요? 따로 sx, sy와 같이 해당 부분을 고정시키는 방법은 없을까요?
undetected chromedriver 를 사용할때 UA_Data = make_user_agent(UA, True) self.driver.execute_cdp_cmd("Network.setUserAgentOverride", UA_Data) 를 이용하여도 userAgentData의 변경이 되지 않습니다. 버전의 문제일까요?
안녕하세요. 4. CDP Command 종류 많죠? 잘 정리된 사이트 소개해드림 부분 강의 듣고있습니다. 파란 사이트, 초록 사이트 주소 알려주신다고 했는데 어디에 나와있나요? 그리고 문서에서 어떤 걸 저희가 능동적으로 찾아야 하고 어떻게 읽고 적용하는지도 알려주시면 좋겠습니다. 필요한 걸 저희가 직접 찾고 적용하는 방법을 알려주셔야 하는데 그냥 코드만 알려주시니까 저희 상황에 맞게 수정하는 방법을 모르겠습니다. 문서를 활용해서 저희에게 어떤 속성이 필요한지 찾는 방법도 자세히 알려주시면 감사하겠습니다. Emulation 이랑 Network랑 뭐가 다른지도 모르겠어요. setDeviceMetricsOverride 가 왜 필요한건진 알겠는데 이 속성이 필요하다는 걸 아는 방법은 모르겠어요. 즉 물고기를 잡아주기만 하는 게 아니라 잡는 방법을 알려주셨으면 합니다.
안녕하세요. ch 2-2 User Agent Data 변경하는법 강의에서 10:00, 10:09 에 '내 눈으로 본것만 믿읍시다' 자막 부분 이해가 안갑니다. Not?A_Brand는 version 끝자리 숫자로 바뀌었네요 이게 무슨 뜻인가요? version last string 값을 넣어주시죠 version 110 되었을때는 0이 될지 10이 될지 그거는 그때 확인해야할듯함 이거는 무슨 뜻일까요?? 강의 보다보면 이렇게 추가적으로 중간중간 자막 달아주신것들이 이해가 안되는 것들이 많습니다. 맥락을 충분히 설명 안해주시고 말씀하시는 느낌이 든달까... 조금만 더 자세히 설명해주시면 감사하겠습니다 ㅜㅜ --------------- 추가로, 이 강의에선 undetected_chromedriver 를 사용하지 않고 일반 웹드라이버를 사용하셨는데 undetected 드라이버랑 함께 사용하지 않으신 이유가 뭘까요??
강의를 보면 ActionChain(driver).scroll( 이라는 함수를 사용하셨는데 스크롤을 위한 시작점을 선택해서 스크롤 시키는것 같습니다.) 하지만 저도 이 함수를 쓰려고 했지만 해당 함수가 ActionChain 에 안나오는걸로 보여서 나중에 보니 scroll_by_amount로 바뀐거로 보입니다. scroll 을 써야 좀더 사람같은?걸까요? 그리고 ActionChain에 TouchAction 이라는게 보이긴 하는데 터치를 시뮬레이션 할 수 있다면 더 좋을것 같은데 혹시 방법이 있을까요?
options = uc.ChromeOptions() 가져와서 아래쪽에 uc.Chrome () 실행할때 options가 안넣어져 있는데 안넣고 실행하는건가요??? 깃허브에 설명에는 driver = uc.Chrome(options=options) 이렇게 되어 있어 보이는데요?
# 랜덤 패턴 가지고오기 def get_random_pattern(isMobile=True): ret_pattern = [] if isMobile: with open("./mobile_scroll.txt","r") as f : while True: line = f.readline() if not line: break ret_pattern.append(line.rstrip()) selected_pattern = random.choice(ret_pattern) _,sx,sy,delay = selected_pattern.split("#") if abs(int(sy)) < 15 or float(delay) < 0.25: #너무 적은 값 return get_random_pattern(isMobile) return int(sx), int(sy), float(delay) else: # PC 패턴 with open("./pc_scroll.txt", "r") as f: while True: line = f.readline() if not line: break ret_pattern.append(line.rstrip()) pc_scroll_px = 114 # 100, 114 selected_pattern = random.choice(ret_pattern) _,dx,dy,delay = selected_pattern.split("#") if float(delay) < 0.25: return get_random_pattern(isMobile) return int(dx),int(pc_scroll_px), float(delay) 질문1. 위 패턴에서 pc_scroll_px 를 114로 하는 이유를 잘 모르겠습니다. 저는 모바일 말고 pc로 작업을 해보려고하는데 114씩만 올라갔다 내려갔다 스크롤되는데 전혀 사람처럼 보이지 않고 부자연스러워 보입니다. ㅜ def random_move(driver,direction="down",count=1,isMobile=True): for _ in range(count): # [O] 사람패턴 ~ 사람이 얼마나 스크롤을 움직였는지 # randY = random.randrange(200,300) randX,randY,_delay = get_random_pattern(isMobile) sx = random.randrange(100,270) sy = random.randrange(250,500) if direction == "up": randY = -randY if random.random() > 0.9 : #10%의 확률로 randY = -randY print(f"Scroll 한다 {randY}") ActionChains(driver).scroll_by_amount(0, randY).perform() # [O] 사람패턴 ~ 스크롤 하는 텀 prob = random.random() if prob < 0.5: dt = random.uniform(_delay*0.1, _delay*0.3) elif prob < 0.8: dt = random.uniform(_delay*0.2, _delay*0.6) else: dt = random.uniform(_delay*0.5, _delay*1.2) time.sleep(dt) time.sleep( 0.5) 질문2. 매개변수로 count를 받고있는데 이 부분을 넣은 이유를 정확하게 모르겠네요. ㅜ 그리고 sx = random.randrange(100,270) sy = random.randrange(250,500) 이렇게 받아둔 변수를 어떻게 활용하는지 강사님께서는 어떻게 사용하는지 궁금합니다.
크롤링시 첫페이지~2페이지등에는맥스터치포인트 값이 "1또는5" 로 설정되고 이후 페이지이동등의 경우 뷰탭클릭, 이미지탭클릭, 쇼핑탭클릭, 링크클릭후새탭으로이동, 링크클릭후새창으로이동 할때 맥스터치포인트 값이 "0" 으로 되면서 플랫폼 값도 "win32"로 바뀌는 현상이 있습니다. 이런경우는 어떻게해야하는가요? 방법이 있다면 조언부탁드립니다.
5. bot detection 피하기 고급편에 나온 소스를 그대로 적용하였습니다. 다른 부분은 문제가 없고, 에러 또한 없습니다. 그런데 window-size 관련된 argument 값이 적용이 안됩니다. 항상 큰 사이즈의 윈도우만 오픈되고 있습니다. python 버젼은 3.11.0 입니다. 버젼을 다운그레이드 해야 할까요?