본문 바로가기

프로그래밍/C#

C# 셀레니움으로 구글 로그인 하기

이전에는  C# 셀레니움을 이용하여 구글 로그인이 가능했었다.

그러나 현재 구글에 로그인을 하려고 하다보면, 자동화툴로 접근하여 로그인을 허용하지 않고 있다.

 

깃허브에서도 올라온 구글 로그인이 안되는 문제에 대한 의견들.

 

https://gist.github.com/ikegami-yukino/51b247080976cb41fe93

 

Automatically Google login by selenium

Automatically Google login by selenium. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

자동화툴로 진정 구글 로그인을 할수는 없을까?

 

글들을 보던중 흥미로운 내용의 유튜브 영상이 공유되었다.

 

https://www.youtube.com/watch?v=HkgDRRWrZKg&feature=youtu.be

해당 영상을 보면, stack overflow사이트를 통해 구글인증을 한 후 유튜브 사이트로 가게되면 구글에 정상적으로 로그인 되는것을 발견!

 

var driverService = ChromeDriverService.CreateDefaultService();
driverService.HideCommandPromptWindow = true; //크롬 콘솔창 숨기기 

var options = new ChromeOptions();

using (IWebDriver driver = new ChromeDriver(driverService, options))
{
	string id = "구글ID";
	string pw = "구글PW";                
 
	 driver.Url = "https://stackoverflow.com/users/login?ssrc=head";
    var googleBtn = driver.FindElement(By.ClassName("s-btn__google"));
    googleBtn.Click();
    Thread.Sleep(2000);

    var emailTag = driver.FindElement(By.Name("identifier"));
    emailTag.SendKeys(id);

    var nextBtn = driver.FindElement(By.Id("identifierNext"));
    nextBtn.Click();

    Thread.Sleep(5000);

    var passwordTag = driver.FindElement(By.Name("password"));
    passwordTag.SendKeys(pw);

    //암호 입력 버튼
    var passNextBtn = driver.FindElement(By.Id("passwordNext"));
    passNextBtn.Click();

    Thread.Sleep(5000);
    
    driver.Url = "https://www.google.co.kr/;
}



 

위와 같이 스택오버플로우 사이트에서 구글인증 후, 구글사이트로 리다이렉트 하면 정상적으로 구글에 로그인이 가능하다!

이 방법이 또 막힐지 모르겠지만, 현재까지는 이상없이 로그인이 가능하다.

 

단, 프로그램을 하면서 기계적이고 반복적으로 로그인 할 경우, 캡챠가 생성될 수 있으니 너무 빈번한 로그인을 피하는게 좋다.

 

 

혹시나 로그인이 안될경우, 계정의 보안을 낮추어 해보도록 한다!