벨로그에 오랜만에 글을 쓰니 감회가 새롭다.
사내 프로젝트에 코딩이 필요한 경우가 왕왕 있다. 이렇게라도 코딩연습을 하고 조금씩 몰랐던 것들을 알아가는게 즐겁기도 하고.. 배웠으니 써먹는다는 마인드를 가진 나한텐 도움이 되는 것 같다. 그나저나 플러터 공부도 해야하는데 쩝..
아무튼, 여기에 모든 코드를 쓰기엔 모종의 이유가 있어 전체 코드를 올리긴 어렵고, 내가 처음에 이해못했던 내용을 적을 생각이다.
- 사내 프로젝트로 회사 전산 데이터가 필요한 상황
- 전산부서는 데이터서버를 나한테 공개해주길 꺼림
- 결국 남은건
크롤링
밖에 없어..! (회사 전산이 웹 접속 방식)- 근데 전산에 접속하려면 구글otp번호를 입력해야하는데 파이썬으로 처리가 되나...?
정말 다행히도 구글링을 해보니 구글otp를 뚫어주는 라이브러리가 있더라. 그 라이브러리 이름은 바로 pyotp [깃허브 홈페이지]
내가 사용한 라이브러리를 정리하면...
- requests
- pandas
- datetime
- pyotp
이렇게 4개가 되겠다.
시크릿 키
pyotp의 문서를 읽어봤을 때, 도대체 구글otp 6자리를 어떻게 얻을 수 있는지 이해가 안됐었다. 아무래도 구글링해도 나오는 자료들은 운영자 입장에서의 otp 얘기인것 같고...
시크릿 키를 넣으라는데 base32니 뭐니 하는 소리가 나오는데 나는 그런거 전혀 모른다고 ㅠㅠ
pytop 깃허브에 있는 내용을 한번 보자.
여기서 totp = pyotp.TOTP("JBSWY3DPEHPK3PXP")
괄호 안에 있는 문자열이 바로 시크릿 키다.
혹시나 해서 해당 QR코드를 핸드폰 카메라로 찍었더니 이런 링크가 복사된다.
otpauth://totp/alice@google.com?secret=JBSWY3DPEHPK3PXP
그렇다. 시크릿 키는 QR코드에 들어있던 것이다.
그럼 이제 이걸 함수로 만들면..
secret_key = "JBSWY3DPEHPK3PXP"
def get_otp(secret_key):
totp = pyotp.TOTP(secret_key)
# print(totp.now())
return totp.now()
나는 이제 로그인에 필요한 최소한의 값 3개를 알고 있는거다.
1. 아이디
2. 비밀번호
3. 구글OTP 6자리
이 외에 크롤링하는데 필요한 파라미터가 있다면 더 추가해서 크롤링을 진행하면 구글otp도 이제 내 걸림돌이 되지 못한다.