코딩 문제. 5초 안에 해당 문자열을 정렬해서 보내면 된다.
당연히 파이썬으로 코드를 짰건만..
import requests
import re
from requests.packages.urllib3.exceptions import InsecureRequestWarning
# Disable flag warning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
url = "<https://defendtheweb.net/playground/alphabetize>"
boundary = "----WebKitFormBoundaryWmt779d2uYGKSaA4"
headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7',
'Connection': 'keep-alive',
'Cookie': 'cookies_dismissed=1; '
'auth_remember=ed0c1b8d9fef3d9f9b25c100a18e99535d5d88c48b02ae36102c4321f3de0ccb; '
'PHPSESSID=sasqfnodccp6tqg5loaioehq2s',
'Host': 'defendtheweb.net',
'Referer': '<https://defendtheweb.net/playground>',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-User': '?1',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '
'(KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'}
res = requests.get(url = url, headers = headers, verify = False)
l = re.findall('<textarea name="words" id="words">(.+)</textarea>',res.text)[0]
l = l.split(', ')
l = sorted(l)
answer = ', '.join(l)
문제는 문제를 푸는 데에 사용되는 token
값이 매번 변하기 때문에 python을 이용한 자동화스크립트를 사용할 수 없다는 점이었다.
보통 해당 token 값은 이전 response에 포함되어서 오는 경우가 종종 있는데, 그런 형식도 아니라서 불가능.
그래서 자바스크립트로 다시 코드를 짜기로 했다.
querySelector()
를 이용해서 selector
로 html를 불러온 다음에 파싱해서 다시 넣어주는 형태.
익숙하지 않아서 좀 시간이 걸렸다.
소스코드
data = document.querySelector("#words").innerHTML;
data = data.split(', ');
data.sort();
data = data.join(', ');
document.querySelector("#answer").value = data;
document.querySelector("#content > div > div.eight.columns > div > div.block-content.row.level > div > div:nth-child(3) > div > div:nth-child(1) > div > form > button").click();