@things-factory/integration-headless 8.0.39 → 9.0.0-9.0.0-beta.59.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-server/engine/index.d.ts +0 -1
- package/dist-server/engine/index.js +0 -1
- package/dist-server/engine/index.js.map +1 -1
- package/dist-server/engine/task/pdf-capture-util.d.ts +1 -1
- package/dist-server/engine/task/pdf-capture-util.js +3 -3
- package/dist-server/engine/task/pdf-capture-util.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/helps/integration/connector/headless-connector.ja.md +183 -31
- package/helps/integration/connector/headless-connector.ko.md +177 -32
- package/helps/integration/connector/headless-connector.md +178 -31
- package/helps/integration/connector/headless-connector.ms.md +180 -32
- package/helps/integration/connector/headless-connector.zh.md +178 -31
- package/package.json +6 -6
- package/dist-server/engine/connector/headless-connector.d.ts +0 -14
- package/dist-server/engine/connector/headless-connector.js +0 -54
- package/dist-server/engine/connector/headless-connector.js.map +0 -1
- package/dist-server/engine/connector/headless-pool.d.ts +0 -3
- package/dist-server/engine/connector/headless-pool.js +0 -63
- package/dist-server/engine/connector/headless-pool.js.map +0 -1
- package/dist-server/engine/connector/index.d.ts +0 -1
- package/dist-server/engine/connector/index.js +0 -4
- package/dist-server/engine/connector/index.js.map +0 -1
- package/server/engine/connector/headless-connector.ts +0 -68
- package/server/engine/connector/headless-pool.ts +0 -69
- package/server/engine/connector/index.ts +0 -1
- package/server/engine/index.ts +0 -2
- package/server/engine/task/headless-pdf-capture-board.ts +0 -182
- package/server/engine/task/headless-pdf-capture-markdown.ts +0 -47
- package/server/engine/task/headless-pdf-capture.ts +0 -39
- package/server/engine/task/headless-pdf-open.ts +0 -98
- package/server/engine/task/headless-pdf-save.ts +0 -88
- package/server/engine/task/index.ts +0 -9
- package/server/engine/task/pdf-capture-util.ts +0 -331
- package/server/index.ts +0 -3
- package/server/tsconfig.json +0 -10
|
@@ -1,57 +1,172 @@
|
|
|
1
|
-
###
|
|
1
|
+
### 🏆 ヘッドレスコネクター (Headless Connector)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**ヘッドレスコネクター**は、ヘッドレスブラウザを使用して **自動ログイン**、**ウェブスクレイピング**、**PDF生成**、**フォーム送信** などのタスクを実行する強力なツールです。
|
|
4
|
+
複数のブラウザセッションを管理し、セッションの維持、クッキーの処理、APIベースのログインなどに対応しています。
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
---
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
## 🚀 1. エンドポイント (Endpoint)
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
**ヘッドレスコネクター**のエンドポイントは、**対象となるウェブサイトのURL** を入力します。
|
|
11
|
+
例えば、`https://example.com` を入力すると、そのウェブサイトのコンテンツを取得できます。
|
|
12
|
+
内部コンテンツからPDFを生成する場合は、`localhost` も使用できます。
|
|
10
13
|
|
|
11
|
-
|
|
12
|
-
- プール内で維持する最小のヘッドレスブラウザインスタンスの数を指定します。
|
|
13
|
-
- デフォルト値: `2`
|
|
14
|
-
- **max** (数字):
|
|
15
|
-
- プールが処理できる最大のヘッドレスブラウザインスタンスの数を指定します。
|
|
16
|
-
- デフォルト値: `10`
|
|
14
|
+
---
|
|
17
15
|
|
|
18
|
-
|
|
16
|
+
## 🔧 2. パラメーター (Parameters)
|
|
19
17
|
|
|
20
|
-
|
|
18
|
+
### ✅ ログイン関連設定
|
|
19
|
+
|
|
20
|
+
| パラメーター | タイプ | 説明 | デフォルト値 |
|
|
21
|
+
| -------------------- | -------- | ----------------------------------------------- | ------------- |
|
|
22
|
+
| `username` | `string` | ログインID (ユーザー名) | `""` |
|
|
23
|
+
| `password` | `string` | ログイン用パスワード | `""` |
|
|
24
|
+
| `loginPagePath` | `string` | ログインページのパス (例: `/login`) | `"/login"` |
|
|
25
|
+
| `loginApiUrl` | `string` | ログインAPIのエンドポイント (必要な場合のみ) | `null` |
|
|
26
|
+
| `usernameSelector` | `string` | ユーザー名入力欄のCSSセレクター | `"#username"` |
|
|
27
|
+
| `passwordSelector` | `string` | パスワード入力欄のCSSセレクター | `"#password"` |
|
|
28
|
+
| `submitSelector` | `string` | ログインボタンのCSSセレクター | `"#submit"` |
|
|
29
|
+
| `successSelector` | `string` | ログイン成功を確認するための要素のCSSセレクター | `null` |
|
|
30
|
+
| `shadowDomSelectors` | `string` | Shadow DOM 内の要素を指定 (カンマ区切り) | `""` |
|
|
31
|
+
| `timeout` | `number` | ログインやページ読み込みのタイムアウト時間 (ms) | `15000` |
|
|
32
|
+
| `retries` | `number` | ログインの試行回数 | `3` |
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 🔍 3. `loginApiUrl` の詳細説明
|
|
37
|
+
|
|
38
|
+
### 🔹 `loginApiUrl`とは?
|
|
39
|
+
|
|
40
|
+
`loginApiUrl` は、ウェブサイトが **APIベースのログイン** を使用する場合に設定するパラメーターです。
|
|
41
|
+
サイトによっては、ログインページでフォーム送信する代わりに、バックエンドのAPIを直接呼び出してログインする仕組みを持っています。
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
### ✅ `loginApiUrl` を **設定しない場合 (`null`)**
|
|
46
|
+
|
|
47
|
+
この場合、**HTMLフォームを使用したログイン方式** を採用します。
|
|
48
|
+
ヘッドレスブラウザが自動的にユーザー名とパスワードを入力し、フォームを送信します。
|
|
49
|
+
|
|
50
|
+
#### 📌 例 (HTMLフォームログイン)
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"endpoint": "https://example.com",
|
|
55
|
+
"params": {
|
|
56
|
+
"username": "user123",
|
|
57
|
+
"password": "securepassword",
|
|
58
|
+
"loginPagePath": "/login",
|
|
59
|
+
"usernameSelector": "#username",
|
|
60
|
+
"passwordSelector": "#password",
|
|
61
|
+
"submitSelector": "#submit-button",
|
|
62
|
+
"successSelector": ".dashboard"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
#### 🛠 動作の流れ:
|
|
68
|
+
|
|
69
|
+
1. `https://example.com/login` に移動
|
|
70
|
+
2. `#username` と `#password` にログイン情報を入力
|
|
71
|
+
3. `#submit-button` をクリックしてフォーム送信
|
|
72
|
+
4. `.dashboard` 要素の有無でログイン成功を判断
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
### ✅ `loginApiUrl` を **設定する場合**
|
|
77
|
+
|
|
78
|
+
この場合、サイトが **APIベースの認証** を使用しているため、`loginApiUrl` を明示的に設定する必要があります。
|
|
79
|
+
例えば、ログインAPIが `/api/auth/login` の場合、このURLを指定します。
|
|
80
|
+
|
|
81
|
+
#### 📌 例 (APIベースのログイン)
|
|
82
|
+
|
|
83
|
+
```json
|
|
84
|
+
{
|
|
85
|
+
"endpoint": "https://example.com",
|
|
86
|
+
"params": {
|
|
87
|
+
"username": "user123",
|
|
88
|
+
"password": "securepassword",
|
|
89
|
+
"loginPagePath": "/login",
|
|
90
|
+
"loginApiUrl": "/api/auth/login",
|
|
91
|
+
"usernameSelector": "#username",
|
|
92
|
+
"passwordSelector": "#password",
|
|
93
|
+
"submitSelector": "#submit-button",
|
|
94
|
+
"successSelector": ".dashboard"
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
#### 🛠 動作の流れ:
|
|
100
|
+
|
|
101
|
+
1. `https://example.com/api/auth/login` に **POSTリクエスト** を送信
|
|
102
|
+
2. サーバーからレスポンスを受け取り、セッションのクッキーを保存
|
|
103
|
+
3. メインページへ移動し、`.dashboard` の存在を確認
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 🏗 4. 設定例
|
|
21
108
|
|
|
22
109
|
```json
|
|
23
110
|
{
|
|
24
|
-
"name": "headless-browser-
|
|
111
|
+
"name": "headless-browser-connector",
|
|
25
112
|
"connector": "headless-connector",
|
|
26
|
-
"endpoint": "
|
|
113
|
+
"endpoint": "https://example.com",
|
|
27
114
|
"params": {
|
|
28
|
-
"
|
|
29
|
-
"
|
|
115
|
+
"username": "user123",
|
|
116
|
+
"password": "securepassword",
|
|
117
|
+
"loginPagePath": "/login",
|
|
118
|
+
"loginApiUrl": "/api/auth/login",
|
|
119
|
+
"usernameSelector": "#username",
|
|
120
|
+
"passwordSelector": "#password",
|
|
121
|
+
"submitSelector": "#submit",
|
|
122
|
+
"successSelector": ".dashboard",
|
|
123
|
+
"timeout": 20000,
|
|
124
|
+
"retries": 5
|
|
30
125
|
}
|
|
31
126
|
}
|
|
32
127
|
```
|
|
33
128
|
|
|
34
|
-
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## 🔄 5. 接続のライフサイクル (Connection Lifecycle)
|
|
35
132
|
|
|
36
|
-
|
|
133
|
+
- **connect**
|
|
37
134
|
|
|
38
|
-
-
|
|
135
|
+
- 設定に従ってログインを試みます。
|
|
136
|
+
- セッションを維持し、クッキーを保存して後続のリクエストで再利用します。
|
|
39
137
|
|
|
40
|
-
|
|
41
|
-
-
|
|
138
|
+
- **disconnect**
|
|
139
|
+
- ヘッドレスブラウザのセッションを終了し、クッキーをクリアします。
|
|
42
140
|
|
|
43
|
-
|
|
44
|
-
- ヘッドレスブラウザプールを破棄し、すべてのインスタンスが適切に終了し、リソースが解放されるようにします。
|
|
141
|
+
---
|
|
45
142
|
|
|
46
|
-
|
|
143
|
+
## ⚡ 6. 対応するタスク (Supported Tasks)
|
|
47
144
|
|
|
48
|
-
|
|
145
|
+
| タスクタイプ | 説明 |
|
|
146
|
+
| ---------------------- | -------------------------------------- |
|
|
147
|
+
| `headless-pdf-capture` | HTMLをPDFに変換する |
|
|
148
|
+
| `headless-scrap` | ウェブページから特定データを抽出する |
|
|
149
|
+
| `headless-post` | フォーム入力を自動化し、送信を実行する |
|
|
49
150
|
|
|
50
|
-
####
|
|
151
|
+
#### 📌 タスク例
|
|
51
152
|
|
|
52
|
-
|
|
153
|
+
### 1️⃣ ウェブスクレイピング (`headless-scrap`)
|
|
154
|
+
|
|
155
|
+
```json
|
|
156
|
+
{
|
|
157
|
+
"name": "scrape-data",
|
|
158
|
+
"taskType": "headless-scrap",
|
|
159
|
+
"params": {
|
|
160
|
+
"path": "/products",
|
|
161
|
+
"selectors": [
|
|
162
|
+
{ "text": "商品名", "value": ".product-title" },
|
|
163
|
+
{ "text": "価格", "value": ".product-price" }
|
|
164
|
+
]
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
```
|
|
53
168
|
|
|
54
|
-
|
|
169
|
+
### 2️⃣ PDF生成 (`headless-pdf-capture`)
|
|
55
170
|
|
|
56
171
|
```json
|
|
57
172
|
{
|
|
@@ -66,6 +181,43 @@
|
|
|
66
181
|
}
|
|
67
182
|
```
|
|
68
183
|
|
|
69
|
-
|
|
184
|
+
### 3️⃣ フォーム送信 (`headless-post`)
|
|
185
|
+
|
|
186
|
+
```json
|
|
187
|
+
{
|
|
188
|
+
"name": "submit-form",
|
|
189
|
+
"taskType": "headless-post",
|
|
190
|
+
"params": {
|
|
191
|
+
"formPath": "/contact",
|
|
192
|
+
"fields": {
|
|
193
|
+
"#name": "田中 太郎",
|
|
194
|
+
"#email": "tanaka@example.com",
|
|
195
|
+
"#message": "こんにちは、これはテストメッセージです!"
|
|
196
|
+
},
|
|
197
|
+
"submitSelector": "#submit-button"
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## 📢 7. 説明 (Description)
|
|
205
|
+
|
|
206
|
+
**ヘッドレスコネクター** は **ウェブスクレイピング、自動ログイン、PDF生成、フォーム送信** などを
|
|
207
|
+
効率的に実行するための強力なツールです。
|
|
208
|
+
**HTMLベースのログイン** と **APIベースのログイン** の両方に対応し、さまざまなサイトでの認証処理が可能です。
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
### 📌 まとめ
|
|
213
|
+
|
|
214
|
+
| 機能 | 説明 |
|
|
215
|
+
| ------------------------ | -------------------------------------- |
|
|
216
|
+
| **HTMLフォームログイン** | ユーザー操作をシミュレートしてログイン |
|
|
217
|
+
| **APIログイン** | APIリクエストで直接ログイン (高速) |
|
|
218
|
+
| **セッション管理** | クッキーを保存し、セッションを維持 |
|
|
219
|
+
| **ウェブスクレイピング** | 指定したコンテンツを抽出して取得 |
|
|
220
|
+
| **PDF変換** | HTMLページをPDFに変換 |
|
|
221
|
+
| **フォーム送信** | 自動的にフォーム入力&送信を実行 |
|
|
70
222
|
|
|
71
|
-
|
|
223
|
+
📌 **ヘッドレスコネクターを使えば、さまざまなウェブサイトのタスクを自動化できます!** 🚀
|
|
@@ -1,58 +1,166 @@
|
|
|
1
|
-
### 헤드리스
|
|
1
|
+
### 🏆 헤드리스 커넥터 (Headless Connector)
|
|
2
2
|
|
|
3
|
-
**헤드리스
|
|
3
|
+
**헤드리스 커넥터**는 헤드리스 브라우저를 활용하여 **로그인 자동화**, **웹 스크래핑**, **PDF 생성**, **폼 제출** 등의 작업을 수행하는 강력한 커넥터입니다.
|
|
4
|
+
여러 개의 브라우저 세션을 관리하며, 세션 유지, 쿠키 활용, API 기반 로그인 등 다양한 기능을 제공합니다.
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
---
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
즉, 엔트포인트는 임의의 문자열을 입력하시면 됩니다.
|
|
8
|
+
## 🚀 1. 엔드포인트 (Endpoint)
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
헤드리스 커넥터의 엔드포인트는 **스크래핑 대상 웹사이트의 URL**을 입력합니다.
|
|
11
|
+
예를 들어, `https://example.com`과 같은 웹사이트의 내용을 가져오거나 내부 컨텐츠로 PDF 파일을 생성하려면 `localhost`를 사용할 수도 있습니다.
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
- 풀에서 유지할 최소 헤드리스 브라우저 인스턴스 수를 지정합니다.
|
|
14
|
-
- 기본값: `2`
|
|
15
|
-
- **max** (숫자):
|
|
16
|
-
- 풀이 처리할 수 있는 최대 헤드리스 브라우저 인스턴스 수를 지정합니다.
|
|
17
|
-
- 기본값: `10`
|
|
13
|
+
---
|
|
18
14
|
|
|
19
|
-
|
|
15
|
+
## 🔧 2. 매개변수 (Parameters)
|
|
20
16
|
|
|
21
|
-
|
|
17
|
+
### ✅ 로그인 관련 설정
|
|
18
|
+
|
|
19
|
+
| 매개변수 | 타입 | 설명 | 기본값 |
|
|
20
|
+
| -------------------- | -------- | --------------------------------------------------------------- | ------------- |
|
|
21
|
+
| `username` | `string` | 로그인할 사용자 이름 (아이디) | `""` |
|
|
22
|
+
| `password` | `string` | 로그인 비밀번호 | `""` |
|
|
23
|
+
| `loginPagePath` | `string` | 로그인 페이지의 경로 (예: `/login`) | `"/login"` |
|
|
24
|
+
| `loginApiUrl` | `string` | 로그인 API 엔드포인트 (없으면 `null`) | `null` |
|
|
25
|
+
| `usernameSelector` | `string` | 로그인 폼의 사용자명 입력 필드 CSS 선택자 | `"#username"` |
|
|
26
|
+
| `passwordSelector` | `string` | 로그인 폼의 비밀번호 입력 필드 CSS 선택자 | `"#password"` |
|
|
27
|
+
| `submitSelector` | `string` | 로그인 버튼의 CSS 선택자 | `"#submit"` |
|
|
28
|
+
| `successSelector` | `string` | 로그인 성공을 판별할 수 있는 요소의 CSS 선택자 | `null` |
|
|
29
|
+
| `shadowDomSelectors` | `string` | Shadow DOM 내부 요소를 찾을 때 사용 (쉼표로 구분된 선택자 목록) | `""` |
|
|
30
|
+
| `timeout` | `number` | 로그인 및 페이지 로딩 대기 시간 (ms) | `15000` |
|
|
31
|
+
| `retries` | `number` | 로그인 시도 횟수 | `3` |
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 🔍 3. `loginApiUrl` 매개변수에 대한 상세 설명
|
|
36
|
+
|
|
37
|
+
### 🔹 `loginApiUrl`란?
|
|
38
|
+
|
|
39
|
+
`loginApiUrl`은 웹사이트에서 구현한 로그인 방식에 따라 로그인 시도 결과를 확인하기 위해 참고하는 설정 정보입니다.
|
|
40
|
+
|
|
41
|
+
### ✅ `loginApiUrl`이 **설정되지 않은 경우 (`null`)**
|
|
42
|
+
|
|
43
|
+
**HTML 폼을 통한 로그인 방식**을 사용하는 웹사이트에서는 별도로 설정하지 않아도 됩니다. 이 경우는 페이지내의 form action을 직접 참조합니다.
|
|
44
|
+
|
|
45
|
+
1. `loginPagePath`에 지정된 로그인 페이지로 이동합니다.
|
|
46
|
+
2. 사용자명 및 비밀번호 입력 필드에 값을 입력합니다.
|
|
47
|
+
3. 로그인 버튼을 클릭하여 로그인을 시도합니다.
|
|
48
|
+
4. `successSelector`를 사용해 로그인 성공 여부를 판별합니다.
|
|
49
|
+
|
|
50
|
+
#### 📌 예제 설정 (HTML 폼 로그인)
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"endpoint": "https://example.com",
|
|
55
|
+
"params": {
|
|
56
|
+
"username": "user123",
|
|
57
|
+
"password": "securepassword",
|
|
58
|
+
"loginPagePath": "/login",
|
|
59
|
+
"usernameSelector": "#username",
|
|
60
|
+
"passwordSelector": "#password",
|
|
61
|
+
"submitSelector": "#submit-button",
|
|
62
|
+
"successSelector": ".dashboard"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
#### 🛠 동작 과정
|
|
68
|
+
|
|
69
|
+
1. `https://example.com/login` 페이지로 이동
|
|
70
|
+
2. `#username`, `#password` 입력 필드에 값을 입력
|
|
71
|
+
3. `#submit-button`을 클릭하여 로그인 요청 전송
|
|
72
|
+
4. `.dashboard` 요소가 나타나면 로그인 성공으로 판단
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
### ✅ `loginApiUrl`을 **설정하는 경우**
|
|
77
|
+
|
|
78
|
+
웹사이트가 **API 기반 로그인 방식**을 사용하는 경우입니다. 이 경우 로그인을 위해서 호출되는 `loginApiUrl`을 직접 파악해서 설정해주어야 합니다.
|
|
79
|
+
Origin 서버가 아닌 별도의 SSO 서버의 API를 호출하는 경우에는 전체 API URL을 설정해주면 됩니다.
|
|
80
|
+
|
|
81
|
+
#### 📌 예제 설정 (API 로그인 방식의 웹사이트)
|
|
82
|
+
|
|
83
|
+
```json
|
|
84
|
+
{
|
|
85
|
+
"endpoint": "https://example.com",
|
|
86
|
+
"params": {
|
|
87
|
+
"username": "user123",
|
|
88
|
+
"password": "securepassword",
|
|
89
|
+
"loginPagePath": "/login",
|
|
90
|
+
"loginApiUrl": "/api/auth/login",
|
|
91
|
+
"usernameSelector": "#username",
|
|
92
|
+
"passwordSelector": "#password",
|
|
93
|
+
"submitSelector": "#submit-button",
|
|
94
|
+
"successSelector": ".dashboard"
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 🏗 4. 설정 예시
|
|
22
102
|
|
|
23
103
|
```json
|
|
24
104
|
{
|
|
25
|
-
"name": "headless-browser-
|
|
105
|
+
"name": "headless-browser-connector",
|
|
26
106
|
"connector": "headless-connector",
|
|
27
|
-
"endpoint": "
|
|
107
|
+
"endpoint": "https://example.com",
|
|
28
108
|
"params": {
|
|
29
|
-
"
|
|
30
|
-
"
|
|
109
|
+
"username": "user123",
|
|
110
|
+
"password": "securepassword",
|
|
111
|
+
"loginPagePath": "/login",
|
|
112
|
+
"loginApiUrl": "/api/auth/login",
|
|
113
|
+
"usernameSelector": "#username",
|
|
114
|
+
"passwordSelector": "#password",
|
|
115
|
+
"submitSelector": "#submit",
|
|
116
|
+
"successSelector": ".dashboard",
|
|
117
|
+
"timeout": 20000,
|
|
118
|
+
"retries": 5
|
|
31
119
|
}
|
|
32
120
|
}
|
|
33
121
|
```
|
|
34
122
|
|
|
35
|
-
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## 🔄 5. 연결 생명주기 (Connection Lifecycle)
|
|
126
|
+
|
|
127
|
+
- **connect**
|
|
36
128
|
|
|
37
|
-
|
|
129
|
+
- 설정된 매개변수에 따라 로그인 프로세스를 수행합니다.
|
|
130
|
+
- 세션이 유지되며, 쿠키를 저장하여 이후 요청에서 재사용합니다.
|
|
38
131
|
|
|
39
|
-
- **
|
|
132
|
+
- **disconnect**
|
|
133
|
+
- 헤드리스 브라우저 세션을 종료하고 쿠키를 정리합니다.
|
|
40
134
|
|
|
41
|
-
|
|
42
|
-
- 풀은 이러한 인스턴스들의 생명주기를 자동으로 관리하며, 필요한 경우 새로운 인스턴스를 생성하고 기존 인스턴스를 재사용합니다.
|
|
135
|
+
---
|
|
43
136
|
|
|
44
|
-
|
|
45
|
-
- 헤드리스 브라우저 풀을 파기하여 모든 인스턴스가 적절히 종료되고 리소스가 해제되도록 합니다.
|
|
137
|
+
## ⚡ 6. 지원하는 작업 (Supported Tasks)
|
|
46
138
|
|
|
47
|
-
|
|
139
|
+
| 작업 유형 | 설명 |
|
|
140
|
+
| ---------------------- | -------------------------------------------------------- |
|
|
141
|
+
| `headless-pdf-capture` | HTML을 PDF로 변환하는 작업 |
|
|
142
|
+
| `headless-scrap` | 웹 페이지에서 특정 데이터를 추출하는 스크래핑 작업 |
|
|
143
|
+
| `headless-post` | 웹사이트에서 폼 데이터를 자동으로 입력하고 제출하는 작업 |
|
|
48
144
|
|
|
49
|
-
|
|
145
|
+
#### 📌 작업 예시
|
|
50
146
|
|
|
51
|
-
|
|
147
|
+
### 1️⃣ 웹 스크래핑 (`headless-scrap`)
|
|
52
148
|
|
|
53
|
-
|
|
149
|
+
```json
|
|
150
|
+
{
|
|
151
|
+
"name": "scrape-data",
|
|
152
|
+
"taskType": "headless-scrap",
|
|
153
|
+
"params": {
|
|
154
|
+
"path": "/products",
|
|
155
|
+
"selectors": [
|
|
156
|
+
{ "text": "Product Name", "value": ".product-title" },
|
|
157
|
+
{ "text": "Price", "value": ".product-price" }
|
|
158
|
+
]
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
```
|
|
54
162
|
|
|
55
|
-
|
|
163
|
+
### 2️⃣ PDF 생성 (`headless-pdf-capture`)
|
|
56
164
|
|
|
57
165
|
```json
|
|
58
166
|
{
|
|
@@ -67,6 +175,43 @@
|
|
|
67
175
|
}
|
|
68
176
|
```
|
|
69
177
|
|
|
70
|
-
|
|
178
|
+
### 3️⃣ 폼 제출 (`headless-post`)
|
|
179
|
+
|
|
180
|
+
```json
|
|
181
|
+
{
|
|
182
|
+
"name": "submit-form",
|
|
183
|
+
"taskType": "headless-post",
|
|
184
|
+
"params": {
|
|
185
|
+
"formPath": "/contact",
|
|
186
|
+
"fields": {
|
|
187
|
+
"#name": "John Doe",
|
|
188
|
+
"#email": "john@example.com",
|
|
189
|
+
"#message": "Hello, this is a test message!"
|
|
190
|
+
},
|
|
191
|
+
"submitSelector": "#submit-button"
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## 📢 7. 설명 (Description)
|
|
199
|
+
|
|
200
|
+
**헤드리스 커넥터**는 **웹 자동화 및 스크래핑, PDF 생성, 폼 자동 입력 및 제출** 등을 위해
|
|
201
|
+
헤드리스 브라우저 세션을 관리하는 강력한 도구입니다.
|
|
202
|
+
특히 **HTML 로그인 방식**과 **API 로그인 방식**을 모두 지원하여 다양한 웹사이트에서 안정적인 로그인을 수행할 수 있습니다.
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
### 📌 요약
|
|
207
|
+
|
|
208
|
+
| 기능 | 설명 |
|
|
209
|
+
| --------------- | ------------------------------------- |
|
|
210
|
+
| **폼 로그인** | UI를 직접 조작하여 로그인 (HTML 기반) |
|
|
211
|
+
| **API 로그인** | HTTP 요청을 통해 직접 로그인 (빠름) |
|
|
212
|
+
| **세션 유지** | 쿠키를 저장하여 지속적인 세션 유지 |
|
|
213
|
+
| **웹 스크래핑** | 데이터 추출 및 자동화 작업 가능 |
|
|
214
|
+
| **PDF 변환** | HTML을 PDF로 변환 |
|
|
215
|
+
| **폼 제출** | 자동으로 데이터를 입력하고 제출 |
|
|
71
216
|
|
|
72
|
-
|
|
217
|
+
**이 커넥터를 활용하면 다양한 웹사이트에서 자동 로그인 및 데이터 수집을 효율적으로 수행할 수 있습니다.** 🚀
|