코딩 문제. 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();