@things-factory/integration-headless 8.0.5 → 9.0.0-beta.12

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.
Files changed (35) hide show
  1. package/dist-server/engine/index.d.ts +0 -1
  2. package/dist-server/engine/index.js +0 -1
  3. package/dist-server/engine/index.js.map +1 -1
  4. package/dist-server/engine/task/pdf-capture-util.d.ts +1 -1
  5. package/dist-server/engine/task/pdf-capture-util.js +3 -3
  6. package/dist-server/engine/task/pdf-capture-util.js.map +1 -1
  7. package/dist-server/tsconfig.tsbuildinfo +1 -1
  8. package/helps/integration/connector/headless-connector.ja.md +183 -31
  9. package/helps/integration/connector/headless-connector.ko.md +177 -32
  10. package/helps/integration/connector/headless-connector.md +178 -31
  11. package/helps/integration/connector/headless-connector.ms.md +180 -32
  12. package/helps/integration/connector/headless-connector.zh.md +178 -31
  13. package/package.json +6 -6
  14. package/dist-server/engine/connector/headless-connector.d.ts +0 -14
  15. package/dist-server/engine/connector/headless-connector.js +0 -54
  16. package/dist-server/engine/connector/headless-connector.js.map +0 -1
  17. package/dist-server/engine/connector/headless-pool.d.ts +0 -3
  18. package/dist-server/engine/connector/headless-pool.js +0 -63
  19. package/dist-server/engine/connector/headless-pool.js.map +0 -1
  20. package/dist-server/engine/connector/index.d.ts +0 -1
  21. package/dist-server/engine/connector/index.js +0 -4
  22. package/dist-server/engine/connector/index.js.map +0 -1
  23. package/server/engine/connector/headless-connector.ts +0 -68
  24. package/server/engine/connector/headless-pool.ts +0 -69
  25. package/server/engine/connector/index.ts +0 -1
  26. package/server/engine/index.ts +0 -2
  27. package/server/engine/task/headless-pdf-capture-board.ts +0 -182
  28. package/server/engine/task/headless-pdf-capture-markdown.ts +0 -47
  29. package/server/engine/task/headless-pdf-capture.ts +0 -39
  30. package/server/engine/task/headless-pdf-open.ts +0 -98
  31. package/server/engine/task/headless-pdf-save.ts +0 -88
  32. package/server/engine/task/index.ts +0 -9
  33. package/server/engine/task/pdf-capture-util.ts +0 -331
  34. package/server/index.ts +0 -3
  35. package/server/tsconfig.json +0 -10
@@ -1,57 +1,172 @@
1
- ### ヘッドレスプールコネクタ (Headless Pool Connector)
1
+ ### 🏆 ヘッドレスコネクター (Headless Connector)
2
2
 
3
- **ヘッドレスプールコネクタ**は、ヘッドレスブラウザインスタンスのプールを管理するために設計されています。このコネクタは、PDFの生成やウェブスクレイピングのように、複数のヘッドレスブラウザセッションを同時に実行する必要がある作業に便利です。このコネクタは、これらのヘッドレスブラウザインスタンスの作成、使用、および破棄を効率的に管理します。
3
+ **ヘッドレスコネクター**は、ヘッドレスブラウザを使用して **自動ログイン**、**ウェブスクレイピング**、**PDF生成**、**フォーム送信** などのタスクを実行する強力なツールです。
4
+ 複数のブラウザセッションを管理し、セッションの維持、クッキーの処理、APIベースのログインなどに対応しています。
4
5
 
5
- #### エンドポイント
6
+ ---
6
7
 
7
- `ヘッドレスプールコネクタ`は特定のエンドポイントを要求しませんが、接続設定の一環としてURIを提供できます。このURIは通常プレースホルダーとして使用され、プールが内部的に実際の接続を処理します。つまり、エンドポイントには任意の文字列を入力することができます。
8
+ ## 🚀 1. エンドポイント (Endpoint)
8
9
 
9
- #### パラメータ
10
+ **ヘッドレスコネクター**のエンドポイントは、**対象となるウェブサイトのURL** を入力します。
11
+ 例えば、`https://example.com` を入力すると、そのウェブサイトのコンテンツを取得できます。
12
+ 内部コンテンツからPDFを生成する場合は、`localhost` も使用できます。
10
13
 
11
- - **min** (数字):
12
- - プール内で維持する最小のヘッドレスブラウザインスタンスの数を指定します。
13
- - デフォルト値: `2`
14
- - **max** (数字):
15
- - プールが処理できる最大のヘッドレスブラウザインスタンスの数を指定します。
16
- - デフォルト値: `10`
14
+ ---
17
15
 
18
- これらのパラメータは、予想される作業負荷に応じてプールのサイズを調整できるようにします。例えば、アプリケーションが同時に複数のブラウザインスタンスを頻繁に必要とする場合、`max`値を増やすことができます。
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-pool",
111
+ "name": "headless-browser-connector",
25
112
  "connector": "headless-connector",
26
- "endpoint": "1",
113
+ "endpoint": "https://example.com",
27
114
  "params": {
28
- "min": 5,
29
- "max": 20
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
- 上記の例では、プールは少なくとも5つのヘッドレスブラウザインスタンスを維持し、必要に応じて最大20インスタンスまで拡張することができます。
129
+ ---
130
+
131
+ ## 🔄 5. 接続のライフサイクル (Connection Lifecycle)
35
132
 
36
- #### 接続ライフサイクル
133
+ - **connect**
37
134
 
38
- - **connect**:
135
+ - 設定に従ってログインを試みます。
136
+ - セッションを維持し、クッキーを保存して後続のリクエストで再利用します。
39
137
 
40
- - 接続を初期化し、設定されたパラメータ(`min`および`max`)に従ってヘッドレスブラウザインスタンスのプールを作成します。
41
- - プールはこれらのインスタンスのライフサイクルを自動的に管理し、必要に応じて新しいインスタンスを作成し、既存のインスタンスを再利用します。
138
+ - **disconnect**
139
+ - ヘッドレスブラウザのセッションを終了し、クッキーをクリアします。
42
140
 
43
- - **disconnect**:
44
- - ヘッドレスブラウザプールを破棄し、すべてのインスタンスが適切に終了し、リソースが解放されるようにします。
141
+ ---
45
142
 
46
- #### 使用シナリオ
143
+ ## ⚡ 6. 対応するタスク (Supported Tasks)
47
144
 
48
- `ヘッドレスプールコネクタ`は、ヘッドレスブラウザ環境で作業を実行する必要があるシナリオで主に使用されます。例えば、HTMLコンテンツからPDFを生成したり、ウェブページのスクリーンショットをキャプチャしたり、ウェブサイトからデータをスクレイピングする際に便利です。
145
+ | タスクタイプ | 説明 |
146
+ | ---------------------- | -------------------------------------- |
147
+ | `headless-pdf-capture` | HTMLをPDFに変換する |
148
+ | `headless-scrap` | ウェブページから特定データを抽出する |
149
+ | `headless-post` | フォーム入力を自動化し、送信を実行する |
49
150
 
50
- #### サポートするタスク
151
+ #### 📌 タスク例
51
152
 
52
- `ヘッドレスプールコネクタ`は `headless-pdf` プレフィックスの付いたタスクをサポートします。これらのタスクは、このコネクタが管理するヘッドレスブラウザインスタンスを使用します。
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
- **ヘッドレスプールコネクタ**は、PDF生成やウェブスクレイピングなどの作業を効率的に実行するために、ヘッドレスブラウザインスタンスのプールを管理し、高負荷なシナリオでのリソース利用の最適化と拡張性を保証します。
223
+ 📌 **ヘッドレスコネクターを使えば、さまざまなウェブサイトのタスクを自動化できます!** 🚀
@@ -1,58 +1,166 @@
1
- ### 헤드리스 커넥터 (Headless Pool Connector)
1
+ ### 🏆 헤드리스 커넥터 (Headless Connector)
2
2
 
3
- **헤드리스 커넥터**는 헤드리스 브라우저 인스턴스의 풀(pool)을 관리하기 위해 설계되었습니다. 이 커넥터는 PDF 생성이나 스크래핑과 같이 여러 개의 헤드리스 브라우저 세션이 동시에 필요한 작업을 수행할 유용합니다. 이 커넥터는 이 헤드리스 브라우저 인스턴스의 생성, 사용 및 파기를 효율적으로 관리합니다.
3
+ **헤드리스 커넥터**는 헤드리스 브라우저를 활용하여 **로그인 자동화**, **웹 스크래핑**, **PDF 생성**, **폼 제출** 등의 작업을 수행하는 강력한 커넥터입니다.
4
+ 여러 개의 브라우저 세션을 관리하며, 세션 유지, 쿠키 활용, API 기반 로그인 등 다양한 기능을 제공합니다.
4
5
 
5
- #### 엔드포인트
6
+ ---
6
7
 
7
- `헤드리스 커넥터`는 특정 엔드포인트를 요구하지 않지만, 연결 설정의 일환으로 URI를 제공할 수 있습니다. 이 URI는 일반적으로 플레이스홀더로 사용되며, 풀은 내부적으로 실제 연결을 처리합니다.
8
- 즉, 엔트포인트는 임의의 문자열을 입력하시면 됩니다.
8
+ ## 🚀 1. 엔드포인트 (Endpoint)
9
9
 
10
- #### 매개변수
10
+ 헤드리스 커넥터의 엔드포인트는 **스크래핑 대상 웹사이트의 URL**을 입력합니다.
11
+ 예를 들어, `https://example.com`과 같은 웹사이트의 내용을 가져오거나 내부 컨텐츠로 PDF 파일을 생성하려면 `localhost`를 사용할 수도 있습니다.
11
12
 
12
- - **min** (숫자):
13
- - 풀에서 유지할 최소 헤드리스 브라우저 인스턴스 수를 지정합니다.
14
- - 기본값: `2`
15
- - **max** (숫자):
16
- - 풀이 처리할 수 있는 최대 헤드리스 브라우저 인스턴스 수를 지정합니다.
17
- - 기본값: `10`
13
+ ---
18
14
 
19
- 매개변수들은 예상되는 작업 부하에 맞춰 풀 크기를 조정할 수 있게 해줍니다. 예를 들어, 애플리케이션에서 여러 브라우저 인스턴스를 자주 동시에 필요로 하는 경우 `max` 값을 늘릴 수 있습니다.
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-pool",
105
+ "name": "headless-browser-connector",
26
106
  "connector": "headless-connector",
27
- "endpoint": "1",
107
+ "endpoint": "https://example.com",
28
108
  "params": {
29
- "min": 5,
30
- "max": 20
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
- 위 예시에서 풀은 최소 5개의 헤드리스 브라우저 인스턴스를 유지하며, 필요에 따라 최대 20개의 인스턴스로 확장할 수 있습니다.
123
+ ---
124
+
125
+ ## 🔄 5. 연결 생명주기 (Connection Lifecycle)
126
+
127
+ - **connect**
36
128
 
37
- #### 연결 생명주기
129
+ - 설정된 매개변수에 따라 로그인 프로세스를 수행합니다.
130
+ - 세션이 유지되며, 쿠키를 저장하여 이후 요청에서 재사용합니다.
38
131
 
39
- - **connect**:
132
+ - **disconnect**
133
+ - 헤드리스 브라우저 세션을 종료하고 쿠키를 정리합니다.
40
134
 
41
- - 연결을 초기화하여 설정된 매개변수(`min` 및 `max`)에 따라 헤드리스 브라우저 인스턴스 풀을 생성합니다.
42
- - 풀은 이러한 인스턴스들의 생명주기를 자동으로 관리하며, 필요한 경우 새로운 인스턴스를 생성하고 기존 인스턴스를 재사용합니다.
135
+ ---
43
136
 
44
- - **disconnect**:
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
- `헤드리스 커넥터`는 헤드리스 브라우저 환경에서 작업을 수행해야 하는 시나리오에서 주로 사용됩니다. 예를 들어, HTML 콘텐츠로부터 PDF를 생성하거나, 웹 페이지의 스크린샷을 캡처하거나, 웹사이트에서 데이터를 스크래핑할 때 유용합니다.
145
+ #### 📌 작업 예시
50
146
 
51
- #### 지원하는 작업
147
+ ### 1️⃣ 웹 스크래핑 (`headless-scrap`)
52
148
 
53
- `헤드리스 풀 커넥터`는 `headless-pdf` 접두사가 붙은 작업을 지원합니다. 이러한 작업은 이 커넥터가 관리하는 헤드리스 브라우저 인스턴스를 사용하게 됩니다.
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
- **헤드리스 커넥터**는 PDF 생성 스크래핑과 같은 작업을 수행하기 위해 헤드리스 브라우저 인스턴스 풀을 효율적으로 관리하며, 높은 수요가 있는 시나리오에서 자원 활용의 최적화와 확장성을 보장합니다.
217
+ **이 커넥터를 활용하면 다양한 웹사이트에서 자동 로그인 데이터 수집을 효율적으로 수행할 있습니다.** 🚀