Skip to content

Commit c1481a3

Browse files
committed
예시 코드 업데이트
1 parent 2b06700 commit c1481a3

File tree

2 files changed

+57
-1
lines changed

2 files changed

+57
-1
lines changed

example/naver/printPaymentHistory.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const printNaverPayHistory = async (id: string, password: string) => {
1818
const module = NaverApp.ModuleFactory.create(page);
1919
const crawlService = new NaverApp.Service(module);
2020

21-
await crawlService.login(id, password);
21+
await crawlService.normalLogin(id, password);
2222

2323
const history = await crawlService.getHistory();
2424
console.log(history);
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import puppeteer from "puppeteer";
2+
import { NaverApp } from "trackpurchase";
3+
4+
import readline from "readline";
5+
import { concat, defer, filter, from, tap } from "rxjs";
6+
7+
const printNaverPayHistory = async (id: string, password: string) => {
8+
const MOBILE_UA =
9+
"Mozilla/5.0 (iPhone; CPU iPhone OS 15_1_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.1 Mobile/15E148 Safari/604.1";
10+
11+
const browser = await puppeteer.launch({
12+
headless: false,
13+
args: ["--start-maximized"],
14+
});
15+
16+
const page = await browser.newPage();
17+
await page.setViewport({ height: 800, width: 1200 });
18+
await page.setUserAgent(MOBILE_UA);
19+
20+
const module = NaverApp.ModuleFactory.create(page);
21+
const crawlService = new NaverApp.Service(module);
22+
23+
const loginEvent$ = crawlService.interactiveLogin(id, password);
24+
const history$ = defer(() => from(crawlService.getHistory()));
25+
const closePage$ = defer(() => from(page.close()));
26+
const closeBrowser$ = defer(() => from(browser.close()));
27+
28+
const final$ = concat(loginEvent$, history$, closePage$, closeBrowser$).pipe(
29+
tap((event) => {
30+
if (event === "otp-required") {
31+
console.log("스마트폰 앱에서 OTP 인증을 완료해주세요.");
32+
}
33+
}),
34+
tap((event) => {
35+
if (event === "manual-otp-required") {
36+
rl.question("otp code: ", async (code) => {
37+
module.pageInteractor.fillManualOTPInput(code);
38+
});
39+
}
40+
}),
41+
filter((event) => event instanceof Array)
42+
);
43+
final$.subscribe((event) => {
44+
console.log(event);
45+
});
46+
};
47+
48+
const rl = readline.createInterface({
49+
input: process.stdin,
50+
output: process.stdout,
51+
});
52+
rl.question("Naver ID: ", (id) => {
53+
rl.question("Naver Password: ", (password) => {
54+
printNaverPayHistory(id, password);
55+
});
56+
});

0 commit comments

Comments
 (0)