[webhacking.kr] 20번 문제 풀이[Python]

최대 1 분 소요

💡 Webhacking.kr challenge(old) 20번 문제에 대한 풀이입니다.

문제

문제 화면

image

문제 풀이

해당 웹페이지에 접근해서 캡차를 2초안에 입력하면 됩니다. 저는 파이썬 코드로 해당 문제를 풀었으며, Selenium을 이용하는 방식과 , requests + BeautifulSoup을 이용하는 2가지 방식으로 모두 풀어봤는데 잘 풀립니다.

Selenium을 이용하는 방식

driver를 만들어 준다음 해당 페이지에 접속해서 captcha_의 값을 읽어 온다음 그대로 다시 입력한 후, 제출버튼을 클릭하는 방식으로 풀었습니다. 전체 코드는 아래에 따로 첨부하겠습니다.

  driver.get("https://webhacking.kr/challenge/code-4/")

    captcha_element = driver.find_element_by_name("captcha_")
    captcha = captcha_element.get_attribute("value")

    driver.find_element_by_name("id").send_keys("oksusu")
    driver.find_element_by_name("cmt").send_keys("good example for selenium")
    driver.find_element_by_name("captcha").send_keys(captcha)
    driver.find_element_by_xpath("/html/body/form/table/tbody/tr[4]/td[1]/input").click()

전체 코드

requests.session 방식

session을 연결한 다음, 해당 페이지에 접속한 뒤에 cpatch 값을 읽고 동일하게 작성해준다음 다시 요청을 보내는 방식입니다.

  def get_captcha(session):
    url = "https://webhacking.kr/challenge/code-4/"
    response = session.get(url)
    soup = BeautifulSoup(response.text,'html.parser')
    captcha = soup.select_one("body > form > table > tr:nth-child(3) > td:nth-child(2) > input:nth-child(2)").get_attribute_list('value')[0]
    return captcha

  
  def send_captcha(session,captcha):
     url = "https://webhacking.kr/challenge/code-4/"
     data = {
         'id':'123',
         'cmt' : '1234',
         'captcha' : captcha
     }
     response = session.post(url,data=data)
     print(response.text)

전체 코드

댓글남기기