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

산마로님의 프로필 이미지

작성한 질문수

Node.js로 웹 크롤링하기

5-1. 페이스북 로그인 태그 분석

페이스북 로그인 로그아웃 자동화관련

24.09.26 17:10 작성

·

38

0

안녕하세요.. 5-1 페이스북 로그인/로그아웃 관련 강의를 따라 하고 있습니다.

puppeteer의 page를 이용해서 로그인 버튼까지는 클릭해서 실행까지는 되는 것 같습니다.

그래서 로그인 버튼 클릭후에 사용자에게 로그인 승인 알람 메시지를 처리해야 실질적인 로그인 페이지로 넘어가고 있는 상황입니다. 이럴경우 강의 시간에 알려주신 방법들은 대부분이 타임아웃 오류가 발생합니다.

 

이 부분을 어떻게 해결해야 할지 방법을 알려 주시면 좋겠습니다. 강의 내용의 모습이랑. 현재시점의 페이스북이 달라서 수정하는 것이 초보자에게는 어렵네요..

 

답변 2

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

2024. 09. 26. 18:16

만약 단순히 타임아웃을 늘려서 해결할 수 있다면 대부분은 두 번째 인수로 타임아웃 옵션을 제공합니다.

page.waitForSelector(선택자, { timeout: 30_000 }) 밀리세컨드 단위라 30이 아니라 30000입니다. 타임아웃으로 해결되는 문제가 아니라면 알려주세요

산마로님의 프로필 이미지
산마로
질문자

2024. 09. 26. 18:20

로그인 2단계 인증이 문제인 것 같습니다. 이메일로 인증번호를 받는 경우 경우에 따라서는 이메일이 오는데 시간이 오래 걸리더라구요... 그리고 제 핸드폰 단말로는 인증 메시지가 처음에는 서네번 오다가 지금은 오지를 않고 있습니다. 이런 경우 timeout을 약 1시간 정도로 설정해 두면 될까요?

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

2024. 09. 26. 18:22

네네 사람이 수동으로 인증받아서 해야하는 경우에는 충분히 늘려주는 수밖에 없습니다.

산마로님의 프로필 이미지
산마로
질문자

2024. 09. 26. 18:28

프로그램적으로 처리하는 방법이 없을까요? 강의시간에 알려주신 것처럼... 무작정 10초를 기다리기 보다는 어떤 이벤트를 기반으로 확인하는 방법을 알려주신 것처럼요...저는 초보라서 잘모르지만...

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

2024. 09. 26. 21:10

이메일이 온다면 이메일을 열어서 인증 버튼을 누르는 것까지 퍼페티어로 자동화할 수는 있겠습니다만 여전히 페이스북에서는 기다리고있어야 하는 게 맞습니다.

산마로님의 프로필 이미지
산마로
질문자

2024. 09. 27. 02:14

한가지 더 문의 드립니다.

얘기해주신대로 waiforSelector를 이용해서 로그아웃 메뉴가 있는 내 프로필관련 요소가 표시될때 까지 최대 10분을 대기하도록해서 테스트 했더니, 더이상 타임아웃으로 인한 오류는 발생안하는 것 같습니다. 지금까지 테스트로는..

그런데 문제는 로그인 버튼을 클릭한 후 2단계 인증을 진행한 후에는, 해당브라우저를 신뢰하는 기기로 등록하겠냐라는 페이지가 또 나타나는데, 이 부분을 그냥 스킵하고 넘어가게 만들 수 없을까요? 이 페이지에서 머물다 보면, 로그인된 페이스북 페이지가 나오지 않아서 또 문제가 될 것 같은데... 지금은 재빨리 등록하라고 버튼 클릭을 하고 있지만.., 이러한 신뢰하는 기기로 등록하는 페이지가 매번 나타나는 것인지, 아닌지도 모르겠습니다. 이런 부분은 어떻게 처리해야 하는지 조언 부탁드립니다.

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

2024. 09. 27. 11:18

페이스북은 보통 자기한테 로그인 한 기기/브라우저를 기록하고 있는데요. 퍼페티어 같은 브라우저를 처음 봐서 뜨는 것입니다. 저건 보통 한 번은 뜰 수 있고 다음 번에 안 뜨는 경우가 많은데, 만약 매번 퍼페티어를 다른 브라우저로 인식한다면 매번 뜰 것입니다. 매번 뜬다면 자동화할 수 있고, 한 번만 뜬다고 해도 try/catch문 안에서 저 페이지가 떴나를 검사해서 다음으로 넘어가게 할 수 있습니다.

0

인프런 AI 인턴님의 프로필 이미지

2024. 09. 26. 17:16

안녕하세요, 인프런 AI 인턴입니다, 산마로님.

페이스북 로그인 프로세스가 변경되어, 로그인 승인 알람 메시지를 처리하는 부분에서 어려움이 있으신 것 같습니다. 유사한 문제를 다룬 질문과 답변을 참고하시면 도움이 될 것 같습니다.

  1. 페이스북 로그아웃 관련해서 문의드립니다:

    • 페이스북 로그아웃 버튼을 찾는 방법에 대해 다룬 게시물입니다. 해당 방법을 응용하여 승인 알람 메시지 버튼을 탐색할 수 있습니다.
  2. facebook 로그인 자동화에서 질문 있습니다:

    • Puppeteer를 이용해 특정 요소를 클릭하는 방법과, 해당 요소가 나타나기를 기다리는 await page.waitForSelector 사용 예제입니다. 로그인 승인 알람 메시지를 기다린 후, 해당 버튼을 클릭하는 식으로 적용할 수 있습니다.

이 예제들은 puppeteer를 사용하여 동적으로 변하는 페이스북 페이지 요소를 처리하는 방법에 대해 자세히 설명하고 있습니다.

마지막으로, 페이스북 로그인 승인이 완료될 때까지 기다린 후, 해당 요소를 클릭하는 코드 예제를 추가로 작성해 보았습니다:

await page.waitForSelector('.classname_of_approval_button');  // 실제 승인 버튼의 클래스 이름으로 변경 필요
await page.click('.classname_of_approval_button');

이 코드를 통해 페이지가 반응할 때까지 기다리고, 로그인 승인 버튼을 클릭하여 다음 단계로 진행할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.