Compare commits

...
7 Commits
Author SHA1 Message Date
hojin.jeong 9c5b413d84 automatic password renewal skip logic added 2025-12-23 12:21:03 +09:00
hojin.jeong 90cbc95ee2 manual lotto policy sort func added 2025-08-25 16:54:40 +09:00
horoli bccdee3ae4 gitignore update 2025-08-25 16:48:42 +09:00
hojin.jeong e5d59a836d config.json => config.json.sample 2025-08-25 16:41:26 +09:00
hojin.jeong da09a696ef Merge branch 'master' of https://git.mapside.kr/public/lotto_automation
# Conflicts:
#	config.json
2025-08-25 16:40:06 +09:00
hojin.jeong f900ef5039 config.json case bugfixe 2025-08-25 16:39:10 +09:00
mapside d226357f5f Update config.json 2025-08-25 07:30:59 +00:00
4 changed files with 33 additions and 4 deletions
+2 -1
View File
@@ -3,4 +3,5 @@
node_modules
test
yarn.lock
config.json
config.json
package-lock.json
+1 -1
View File
@@ -5,6 +5,6 @@
"ntfyToken": "TOKEN",
"buyLottoPolicy": [
"auto",
"1,2,3,4,5,6"
[1,2,3,4,5,6]
]
}
+1
View File
@@ -6,6 +6,7 @@ class Constants {
static SYSTEM_CHECK_URL = `${Constants.BASE_URL}/index_check.html`
static MAIN_PAGE_URL = `${Constants.BASE_URL}/common.do?method=main`
static LOGIN_REQUEST_URL = `${Constants.BASE_URL}/userSsl.do?method=login`
static PW_CHANGE_NEXT_URL = `${Constants.BASE_URL}/userSsl.do?method=pspnPwChng`
static BUY_PAGE_URL = `${Constants.API_URL}/olotto/game/game645.do`
static BUY_LOTTO_645_URL = `${Constants.API_URL}/olotto/game/execBuy.do`
static BUY_READY_SOCKET_URL = `${Constants.API_URL}/olotto/game/egovUserReadySocket.json`
+29 -2
View File
@@ -62,7 +62,34 @@ class Lotto {
if(loginResult instanceof Error)
return loginResult
const $ = Cheerio.load(loginResult.data)
let $ = Cheerio.load(loginResult.data)
/**
* 비밀번호 변경 감지
*
* 비밀번호가 변경이 될 경우 'https://www.dhlottery.co.kr/userSsl.do?method=pwdPlyChngNoti'로 redirect 됨
* 비밀번호를 유지할 지 변경할 지 고르는 페이지인데, 여기에 있는 chngTgtId 및 pwdChgToken를 추출해서
*
* POST 'https://www.dhlottery.co.kr/userSsl.do?method=pspnPwChng'
* payload로 chngTgtId, pwdChgToken을 보내면 다음에 하기 처리됨.
*
* 성공하면 'https://www.dhlottery.co.kr/user.do?method=login&returnUrl=https%3A%2F%2Fwww.dhlottery.co.kr%2Fcommon.do%3Fmethod%3Dmain'
* redirect 진행되며, 마지막으로 MAIN_PAGE_URL로 redirect됨
*/
const targetInput = $('#chngTgtId')
if(targetInput.length !== 0) {
const chngTgtId = targetInput.val()
const pwdChgToken = $('#pwdChgToken').val()
const pwChgNextData = { chngTgtId, pwdChgToken }
const pgChgNextResult = await this.#_request('POST', Constants.PW_CHANGE_NEXT_URL, pwChgNextData)
if(pgChgNextResult instanceof Error)
return pgChgNextResult
$ = Cheerio.load(pgChgNextResult.data)
}
const btnCommonElements = $('a.btn_common')
if(btnCommonElements.length > 0)
return new Error('로그인에 실패했습니다. 아이디 또는 비밀번호를 확인해주세요.')
@@ -86,7 +113,7 @@ class Lotto {
const requestParams = lotteryInputs.map((lotto, idx) => {
return {
genType: lotto === 'auto' ? '0' : '1',
arrGameChoiceNum: lotto === 'auto' ? null : lotto.map(num => String(num).padStart(2, 0)).join(','),
arrGameChoiceNum: lotto === 'auto' ? null : lotto.sort().map(num => String(num).padStart(2, 0)).join(','),
alpabet: String.fromCharCode(65 + idx)
}
})