[webhacking.kr] 20번 문제 풀이[Python]
💡 Webhacking.kr challenge(old) 20번 문제에 대한 풀이입니다.
문제
문제 화면
문제 풀이
해당 웹페이지에 접근해서 캡차를 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)
전체 코드
댓글남기기