thordata-js-sdk 0.1.0 → 0.2.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/README.md CHANGED
@@ -143,6 +143,88 @@ Official and up-to-date parameters are documented at: https://doc.thordata.com
143
143
 
144
144
  ---
145
145
 
146
+ ## 🌐 Proxy Network
147
+
148
+ Each proxy product requires separate credentials from Thordata Dashboard.
149
+
150
+ ### Environment Variables
151
+
152
+ ```env
153
+ # Residential Proxy (port 9999)
154
+ THORDATA_RESIDENTIAL_USERNAME=your_residential_username
155
+ THORDATA_RESIDENTIAL_PASSWORD=your_residential_password
156
+
157
+ # Datacenter Proxy (port 7777)
158
+ THORDATA_DATACENTER_USERNAME=your_datacenter_username
159
+ THORDATA_DATACENTER_PASSWORD=your_datacenter_password
160
+
161
+ # Mobile Proxy (port 5555)
162
+ THORDATA_MOBILE_USERNAME=your_mobile_username
163
+ THORDATA_MOBILE_PASSWORD=your_mobile_password
164
+
165
+ # Static ISP Proxy (port 6666, direct IP connection)
166
+ THORDATA_ISP_HOST=your_static_ip_address
167
+ THORDATA_ISP_USERNAME=your_isp_username
168
+ THORDATA_ISP_PASSWORD=your_isp_password
169
+ ```
170
+
171
+ ### Residential Proxy
172
+
173
+ ```typescript
174
+ import { Thordata } from "thordata-js-sdk";
175
+
176
+ const client = new Thordata();
177
+
178
+ // Basic US residential
179
+ const proxy = Thordata.Proxy.residentialFromEnv().country("us");
180
+ const result = await client.request("http://httpbin.org/ip", { proxy });
181
+ console.log("IP:", result.origin);
182
+
183
+ // Sticky session (same IP for 30 minutes)
184
+ const stickyProxy = Thordata.Proxy.residentialFromEnv()
185
+ .country("jp")
186
+ .city("tokyo")
187
+ .session("my_session")
188
+ .sticky(30);
189
+ const result2 = await client.request("http://httpbin.org/ip", { proxy: stickyProxy });
190
+ ```
191
+
192
+ ### Datacenter Proxy
193
+
194
+ ```typescript
195
+ const proxy = Thordata.Proxy.datacenterFromEnv();
196
+ const result = await client.request("http://httpbin.org/ip", { proxy });
197
+ console.log("Datacenter IP:", result.origin);
198
+ ```
199
+
200
+ ### Mobile Proxy
201
+
202
+ ```typescript
203
+ const proxy = Thordata.Proxy.mobileFromEnv().country("gb");
204
+ const result = await client.request("http://httpbin.org/ip", { proxy });
205
+ console.log("UK Mobile IP:", result.origin);
206
+ ```
207
+
208
+ ### Static ISP Proxy
209
+
210
+ ```typescript
211
+ const proxy = Thordata.Proxy.ispFromEnv();
212
+ const result = await client.request("http://httpbin.org/ip", { proxy });
213
+ console.log("Static ISP IP:", result.origin);
214
+ // Returns your purchased static IP address
215
+ ```
216
+
217
+ ### Proxy Examples
218
+
219
+ ```bash
220
+ node dist/examples/proxy_residential.js
221
+ node dist/examples/proxy_datacenter.js
222
+ node dist/examples/proxy_mobile.js
223
+ node dist/examples/proxy_isp.js
224
+ ```
225
+
226
+ ---
227
+
146
228
  ## 🔓 Web Unlocker / Universal API
147
229
 
148
230
  ### Basic HTML scraping
@@ -0,0 +1 @@
1
+ import "dotenv/config";
@@ -0,0 +1,18 @@
1
+ // examples/proxy_datacenter.ts
2
+ import "dotenv/config";
3
+ import { Thordata } from "../src/thordata.js";
4
+ async function main() {
5
+ if (!process.env.THORDATA_DATACENTER_USERNAME || !process.env.THORDATA_DATACENTER_PASSWORD) {
6
+ console.log("Datacenter Proxy Demo - Skipped");
7
+ console.log("Set THORDATA_DATACENTER_USERNAME and THORDATA_DATACENTER_PASSWORD in .env");
8
+ return;
9
+ }
10
+ const client = new Thordata();
11
+ const testUrl = "http://httpbin.org/ip";
12
+ console.log("Datacenter Proxy Demo\n");
13
+ const proxy = Thordata.Proxy.datacenterFromEnv();
14
+ const result = await client.request(testUrl, { proxy });
15
+ console.log("Datacenter IP:", result.origin);
16
+ }
17
+ main().catch(console.error);
18
+ //# sourceMappingURL=proxy_datacenter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy_datacenter.js","sourceRoot":"","sources":["../../examples/proxy_datacenter.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,CAAC;QAC3F,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;QACzF,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,uBAAuB,CAAC;IAExC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEvC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ import "dotenv/config";
@@ -0,0 +1,69 @@
1
+ // examples/proxy_demo.ts
2
+ import "dotenv/config";
3
+ import { Thordata } from "../src/thordata.js";
4
+ async function main() {
5
+ const client = new Thordata();
6
+ const testUrl = "http://httpbin.org/ip";
7
+ console.log("Thordata Proxy Demo\n");
8
+ console.log("Each proxy product requires its own credentials.\n");
9
+ // Test Residential Proxy
10
+ if (process.env.THORDATA_RESIDENTIAL_USERNAME && process.env.THORDATA_RESIDENTIAL_PASSWORD) {
11
+ try {
12
+ const proxy = Thordata.Proxy.residentialFromEnv().country("us");
13
+ const result = await client.request(testUrl, { proxy });
14
+ console.log("1. Residential (US) IP:", result.origin);
15
+ }
16
+ catch (e) {
17
+ console.log("1. Residential: Failed -", e.message?.slice(0, 60));
18
+ }
19
+ }
20
+ else {
21
+ console.log("1. Residential: Skipped (credentials not set)");
22
+ }
23
+ // Test Datacenter Proxy
24
+ if (process.env.THORDATA_DATACENTER_USERNAME && process.env.THORDATA_DATACENTER_PASSWORD) {
25
+ try {
26
+ const proxy = Thordata.Proxy.datacenterFromEnv();
27
+ const result = await client.request(testUrl, { proxy });
28
+ console.log("2. Datacenter IP :", result.origin);
29
+ }
30
+ catch (e) {
31
+ console.log("2. Datacenter: Failed -", e.message?.slice(0, 60));
32
+ }
33
+ }
34
+ else {
35
+ console.log("2. Datacenter: Skipped (credentials not set)");
36
+ }
37
+ // Test Mobile Proxy
38
+ if (process.env.THORDATA_MOBILE_USERNAME && process.env.THORDATA_MOBILE_PASSWORD) {
39
+ try {
40
+ const proxy = Thordata.Proxy.mobileFromEnv().country("gb");
41
+ const result = await client.request(testUrl, { proxy });
42
+ console.log("3. Mobile (UK) IP :", result.origin);
43
+ }
44
+ catch (e) {
45
+ console.log("3. Mobile: Failed -", e.message?.slice(0, 60));
46
+ }
47
+ }
48
+ else {
49
+ console.log("3. Mobile: Skipped (credentials not set)");
50
+ }
51
+ // Test ISP Proxy
52
+ if (process.env.THORDATA_ISP_USERNAME && process.env.THORDATA_ISP_PASSWORD) {
53
+ try {
54
+ const proxy = Thordata.Proxy.ispFromEnv();
55
+ const result = await client.request(testUrl, { proxy });
56
+ console.log("4. ISP IP :", result.origin);
57
+ }
58
+ catch (e) {
59
+ console.log("4. ISP: Failed -", e.message?.slice(0, 60));
60
+ }
61
+ }
62
+ else {
63
+ console.log("4. ISP: Skipped (credentials not set)");
64
+ }
65
+ console.log("\nProxy demo completed.");
66
+ console.log("To enable a proxy type, set its credentials in .env");
67
+ }
68
+ main().catch(console.error);
69
+ //# sourceMappingURL=proxy_demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy_demo.js","sourceRoot":"","sources":["../../examples/proxy_demo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import "dotenv/config";
@@ -0,0 +1,21 @@
1
+ // examples/proxy_isp.ts
2
+ import "dotenv/config";
3
+ import { Thordata } from "../src/thordata.js";
4
+ async function main() {
5
+ if (!process.env.THORDATA_ISP_HOST ||
6
+ !process.env.THORDATA_ISP_USERNAME ||
7
+ !process.env.THORDATA_ISP_PASSWORD) {
8
+ console.log("ISP Proxy Demo - Skipped");
9
+ console.log("Set THORDATA_ISP_HOST, THORDATA_ISP_USERNAME, and THORDATA_ISP_PASSWORD in .env");
10
+ return;
11
+ }
12
+ const client = new Thordata();
13
+ const testUrl = "http://httpbin.org/ip";
14
+ console.log("Static ISP Proxy Demo\n");
15
+ const proxy = Thordata.Proxy.ispFromEnv();
16
+ const result = await client.request(testUrl, { proxy });
17
+ console.log("Static ISP IP:", result.origin);
18
+ console.log("Expected IP :", process.env.THORDATA_ISP_HOST);
19
+ }
20
+ main().catch(console.error);
21
+ //# sourceMappingURL=proxy_isp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy_isp.js","sourceRoot":"","sources":["../../examples/proxy_isp.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,KAAK,UAAU,IAAI;IACjB,IACE,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC9B,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB;QAClC,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAClC,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,iFAAiF,CAAC,CAAC;QAC/F,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,uBAAuB,CAAC;IAExC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEvC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAC/D,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ import "dotenv/config";
@@ -0,0 +1,18 @@
1
+ // examples/proxy_mobile.ts
2
+ import "dotenv/config";
3
+ import { Thordata } from "../src/thordata.js";
4
+ async function main() {
5
+ if (!process.env.THORDATA_MOBILE_USERNAME || !process.env.THORDATA_MOBILE_PASSWORD) {
6
+ console.log("Mobile Proxy Demo - Skipped");
7
+ console.log("Set THORDATA_MOBILE_USERNAME and THORDATA_MOBILE_PASSWORD in .env");
8
+ return;
9
+ }
10
+ const client = new Thordata();
11
+ const testUrl = "http://httpbin.org/ip";
12
+ console.log("Mobile Proxy Demo\n");
13
+ const proxy = Thordata.Proxy.mobileFromEnv().country("gb");
14
+ const result = await client.request(testUrl, { proxy });
15
+ console.log("UK Mobile IP:", result.origin);
16
+ }
17
+ main().catch(console.error);
18
+ //# sourceMappingURL=proxy_mobile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy_mobile.js","sourceRoot":"","sources":["../../examples/proxy_mobile.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC;QACnF,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;QACjF,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,uBAAuB,CAAC;IAExC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAEnC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ import "dotenv/config";
@@ -0,0 +1,27 @@
1
+ // examples/proxy_residential.ts
2
+ import "dotenv/config";
3
+ import { Thordata } from "../src/thordata.js";
4
+ async function main() {
5
+ if (!process.env.THORDATA_RESIDENTIAL_USERNAME || !process.env.THORDATA_RESIDENTIAL_PASSWORD) {
6
+ console.log("Residential Proxy Demo - Skipped");
7
+ console.log("Set THORDATA_RESIDENTIAL_USERNAME and THORDATA_RESIDENTIAL_PASSWORD in .env");
8
+ return;
9
+ }
10
+ const client = new Thordata();
11
+ const testUrl = "http://httpbin.org/ip";
12
+ console.log("Residential Proxy Demo\n");
13
+ // Basic usage
14
+ const proxy1 = Thordata.Proxy.residentialFromEnv().country("us");
15
+ const r1 = await client.request(testUrl, { proxy: proxy1 });
16
+ console.log("US Residential IP:", r1.origin);
17
+ // With sticky session
18
+ const proxy2 = Thordata.Proxy.residentialFromEnv()
19
+ .country("jp")
20
+ .city("tokyo")
21
+ .session("my_session")
22
+ .sticky(30);
23
+ const r2 = await client.request(testUrl, { proxy: proxy2 });
24
+ console.log("Tokyo Sticky IP :", r2.origin);
25
+ }
26
+ main().catch(console.error);
27
+ //# sourceMappingURL=proxy_residential.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy_residential.js","sourceRoot":"","sources":["../../examples/proxy_residential.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,CAAC;QAC7F,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC;QAC3F,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,uBAAuB,CAAC;IAExC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAExC,cAAc;IACd,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAE7C,sBAAsB;IACtB,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,kBAAkB,EAAE;SAC/C,OAAO,CAAC,IAAI,CAAC;SACb,IAAI,CAAC,OAAO,CAAC;SACb,OAAO,CAAC,YAAY,CAAC;SACrB,MAAM,CAAC,EAAE,CAAC,CAAC;IACd,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -1,5 +1,6 @@
1
- import { SerpOptions, UniversalOptions, ScraperTaskOptions, WaitForTaskOptions, ProxyConfig } from "./models.js";
1
+ import { SerpOptions, UniversalOptions, ScraperTaskOptions, WaitForTaskOptions } from "./models.js";
2
2
  import { type ThordataBaseUrls } from "./endpoints.js";
3
+ import { Proxy } from "./proxy.js";
3
4
  export interface ThordataClientConfig {
4
5
  scraperToken: string;
5
6
  publicToken?: string;
@@ -35,5 +36,9 @@ export declare class ThordataClient {
35
36
  getTaskStatus(taskId: string): Promise<string>;
36
37
  getTaskResult(taskId: string, fileType?: "json" | "csv" | "xlsx"): Promise<string>;
37
38
  waitForTask(taskId: string, options?: WaitForTaskOptions): Promise<string>;
38
- requestViaProxy(url: string, proxyConfig: ProxyConfig, axiosConfig?: Record<string, any>): Promise<any>;
39
+ request(url: string, config?: {
40
+ proxy?: Proxy;
41
+ timeout?: number;
42
+ [key: string]: any;
43
+ }): Promise<any>;
39
44
  }
@@ -1,10 +1,12 @@
1
1
  // src/client.ts
2
2
  import axios from "axios";
3
+ import https from "node:https";
3
4
  import { Engine, TaskStatus } from "./enums.js";
4
5
  import { ThordataError, ThordataTimeoutError } from "./errors.js";
5
6
  import { buildAuthHeaders, buildPublicHeaders, handleAxiosError, toFormBody, raiseForCode, safeParseJson, withRetry, } from "./utils.js";
6
7
  import { resolveBaseUrls } from "./endpoints.js";
7
8
  import { buildUserAgent } from "./utils.js";
9
+ import { Proxy } from "./proxy.js";
8
10
  export class ThordataClient {
9
11
  scraperToken;
10
12
  publicToken;
@@ -263,15 +265,20 @@ export class ThordataClient {
263
265
  // --------------------------
264
266
  // 4) Proxy Network
265
267
  // --------------------------
266
- async requestViaProxy(url, proxyConfig, axiosConfig = {}) {
268
+ async request(url, config = {}) {
267
269
  if (!url) {
268
- throw new ThordataError("url is required for requestViaProxy");
270
+ throw new ThordataError("url is required for request");
271
+ }
272
+ const axiosConfig = {
273
+ ...config,
274
+ timeout: config.timeout ?? this.timeoutMs,
275
+ httpsAgent: new https.Agent({ rejectUnauthorized: false }),
276
+ };
277
+ if (config.proxy instanceof Proxy) {
278
+ axiosConfig.proxy = config.proxy.toAxiosConfig();
269
279
  }
270
280
  return this.execute(async () => {
271
- const res = await this.http.get(url, {
272
- ...axiosConfig,
273
- proxy: proxyConfig.toAxiosProxyConfig(),
274
- });
281
+ const res = await this.http.get(url, axiosConfig);
275
282
  return res.data;
276
283
  });
277
284
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- export * from "./client.js";
2
1
  export * from "./enums.js";
3
2
  export * from "./errors.js";
4
- export * from "./models.js";
5
- export * from "./retry.js";
6
- export * from "./endpoints.js";
3
+ export * from "./thordata.js";
4
+ export * from "./proxy.js";
5
+ export { ThordataClient } from "./client.js";
6
+ export type { SerpOptions, UniversalOptions, ScraperTaskOptions } from "./models.js";
package/dist/src/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  // src/index.ts
2
- export * from "./client.js";
3
2
  export * from "./enums.js";
4
3
  export * from "./errors.js";
5
- export * from "./models.js";
6
- export * from "./retry.js";
7
- export * from "./endpoints.js";
4
+ export * from "./thordata.js";
5
+ export * from "./proxy.js";
6
+ // 保持兼容性(老用户不受影响)
7
+ export { ThordataClient } from "./client.js";
8
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AAEf,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAE3B,iBAAiB;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
@@ -1,11 +1,6 @@
1
- import { Engine } from "./enums.js";
2
- /**
3
- * SERP search options.
4
- * 对应 Python 的 SerpRequest + docs/serp_reference.md
5
- */
6
1
  export interface SerpOptions {
7
2
  query: string;
8
- engine?: Engine | "google" | "google_news" | "google_shopping" | "google_images" | "google_videos" | "bing" | "bing_news" | "yandex" | "duckduckgo";
3
+ engine?: string;
9
4
  num?: number;
10
5
  start?: number;
11
6
  country?: string;
@@ -17,17 +12,12 @@ export interface SerpOptions {
17
12
  outputFormat?: "json" | "html";
18
13
  [key: string]: any;
19
14
  }
20
- /**
21
- * Universal / Web Unlocker options.
22
- * 对应 docs/universal_reference.md
23
- */
24
15
  export interface UniversalOptions {
25
16
  url: string;
26
17
  jsRender?: boolean;
27
- outputFormat?: "html" | "png";
18
+ outputFormat?: "html" | "png" | "pdf";
28
19
  country?: string;
29
- blockResources?: string;
30
- cleanContent?: string;
20
+ blockResources?: string[];
31
21
  wait?: number;
32
22
  waitFor?: string;
33
23
  headers?: {
@@ -40,10 +30,6 @@ export interface UniversalOptions {
40
30
  }[];
41
31
  [key: string]: any;
42
32
  }
43
- /**
44
- * Web Scraper task options.
45
- * 对应 Python 的 ScraperTaskConfig / create_scraper_task
46
- */
47
33
  export interface ScraperTaskOptions {
48
34
  fileName: string;
49
35
  spiderId: string;
@@ -52,79 +38,7 @@ export interface ScraperTaskOptions {
52
38
  universalParams?: Record<string, any>;
53
39
  includeErrors?: boolean;
54
40
  }
55
- /**
56
- * Options for waitForTask helper.
57
- */
58
41
  export interface WaitForTaskOptions {
59
42
  pollIntervalMs?: number;
60
43
  maxWaitMs?: number;
61
44
  }
62
- /**
63
- * Proxy configuration for Thordata residential / mobile / DC / ISP proxies.
64
- *
65
- * 注意:
66
- * - 这里不猜 host/port(因为每个账户/产品可能不同),需要用户自己提供;
67
- * - 我们帮你拼接 username(td-customer-USERNAME-country-us-city-xxx-sessid-...);
68
- * - 适用于 Node.js axios 的 proxy 配置。
69
- */
70
- export interface ProxyConfigOptions {
71
- /**
72
- * 你的子账户用户名(不含 td-customer- 前缀),
73
- * 例如 Dashboard 中的 "GnrqUwwu3obt"。
74
- */
75
- baseUsername: string;
76
- /**
77
- * 对应的密码。
78
- */
79
- password: string;
80
- /**
81
- * 代理主机,例如:
82
- * - pr.thordata.net
83
- * - t.pr.thordata.net
84
- * - vpn9wq0d.pr.thordata.net
85
- */
86
- host: string;
87
- /**
88
- * 代理端口,例如:
89
- * - 9999 (Residential)
90
- * - 5555 (Mobile)
91
- * - 7777 (Datacenter)
92
- * - 6666 (ISP)
93
- */
94
- port: number;
95
- continent?: string;
96
- country?: string;
97
- state?: string;
98
- city?: string;
99
- asn?: string;
100
- sessionId?: string;
101
- sessionDuration?: number;
102
- }
103
- export declare class ProxyConfig {
104
- private opts;
105
- constructor(options: ProxyConfigOptions);
106
- private validate;
107
- /**
108
- * 构造包含地理/ASN/session 参数的完整用户名:
109
- * td-customer-{baseUsername}-country-us-city-seattle-sessid-xxx-sesstime-10
110
- */
111
- buildUsername(): string;
112
- /**
113
- * 返回 axios 的 proxy 配置:
114
- *
115
- * axios.get(url, {
116
- * proxy: proxyConfig.toAxiosProxyConfig(),
117
- * });
118
- */
119
- toAxiosProxyConfig(): {
120
- host: string;
121
- port: number;
122
- auth: {
123
- username: string;
124
- password: string;
125
- };
126
- };
127
- get host(): string;
128
- get port(): number;
129
- get password(): string;
130
- }
@@ -1,92 +1,2 @@
1
- // src/models.ts
2
- export class ProxyConfig {
3
- opts;
4
- constructor(options) {
5
- this.opts = { ...options };
6
- this.validate();
7
- }
8
- validate() {
9
- const { baseUsername, password, host, port, sessionDuration } = this.opts;
10
- if (!baseUsername) {
11
- throw new Error("ProxyConfig.baseUsername is required");
12
- }
13
- if (!password) {
14
- throw new Error("ProxyConfig.password is required");
15
- }
16
- if (!host) {
17
- throw new Error("ProxyConfig.host is required");
18
- }
19
- if (!port) {
20
- throw new Error("ProxyConfig.port is required");
21
- }
22
- if (sessionDuration !== undefined) {
23
- if (sessionDuration < 1 || sessionDuration > 90) {
24
- throw new Error("ProxyConfig.sessionDuration must be between 1 and 90 minutes");
25
- }
26
- if (!this.opts.sessionId) {
27
- throw new Error("ProxyConfig.sessionDuration requires sessionId to be set");
28
- }
29
- }
30
- }
31
- /**
32
- * 构造包含地理/ASN/session 参数的完整用户名:
33
- * td-customer-{baseUsername}-country-us-city-seattle-sessid-xxx-sesstime-10
34
- */
35
- buildUsername() {
36
- const { baseUsername, continent, country, state, city, asn, sessionId, sessionDuration } = this.opts;
37
- const parts = [`td-customer-${baseUsername}`];
38
- if (continent) {
39
- parts.push(`continent-${continent.toLowerCase()}`);
40
- }
41
- if (country) {
42
- parts.push(`country-${country.toLowerCase()}`);
43
- }
44
- if (state) {
45
- parts.push(`state-${state.toLowerCase()}`);
46
- }
47
- if (city) {
48
- parts.push(`city-${city.toLowerCase()}`);
49
- }
50
- if (asn) {
51
- let asnValue = asn.toUpperCase();
52
- if (!asnValue.startsWith("AS")) {
53
- asnValue = `AS${asnValue}`;
54
- }
55
- parts.push(`asn-${asnValue}`);
56
- }
57
- if (sessionId) {
58
- parts.push(`sessid-${sessionId}`);
59
- }
60
- if (sessionDuration !== undefined) {
61
- parts.push(`sesstime-${sessionDuration}`);
62
- }
63
- return parts.join("-");
64
- }
65
- /**
66
- * 返回 axios 的 proxy 配置:
67
- *
68
- * axios.get(url, {
69
- * proxy: proxyConfig.toAxiosProxyConfig(),
70
- * });
71
- */
72
- toAxiosProxyConfig() {
73
- return {
74
- host: this.opts.host,
75
- port: this.opts.port,
76
- auth: {
77
- username: this.buildUsername(),
78
- password: this.opts.password,
79
- },
80
- };
81
- }
82
- get host() {
83
- return this.opts.host;
84
- }
85
- get port() {
86
- return this.opts.port;
87
- }
88
- get password() {
89
- return this.opts.password;
90
- }
91
- }
1
+ export {};
92
2
  //# sourceMappingURL=models.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":""}
@@ -0,0 +1,41 @@
1
+ import type { AxiosProxyConfig } from "axios";
2
+ export type ProxyProduct = "residential" | "datacenter" | "mobile" | "isp";
3
+ export interface ProxyCredentials {
4
+ username: string;
5
+ password: string;
6
+ }
7
+ export interface StaticProxyConfig {
8
+ host: string;
9
+ username: string;
10
+ password: string;
11
+ }
12
+ export interface ProxyOptions {
13
+ country?: string;
14
+ region?: string;
15
+ city?: string;
16
+ asn?: string;
17
+ session?: string;
18
+ stickyMinutes?: number;
19
+ }
20
+ export declare class Proxy {
21
+ private product;
22
+ private credentials;
23
+ private opts;
24
+ private staticConfig?;
25
+ private constructor();
26
+ static residential(creds: ProxyCredentials, opts?: ProxyOptions): Proxy;
27
+ static datacenter(creds: ProxyCredentials, opts?: ProxyOptions): Proxy;
28
+ static mobile(creds: ProxyCredentials, opts?: ProxyOptions): Proxy;
29
+ static isp(config: StaticProxyConfig): Proxy;
30
+ static residentialFromEnv(opts?: ProxyOptions): Proxy;
31
+ static datacenterFromEnv(opts?: ProxyOptions): Proxy;
32
+ static mobileFromEnv(opts?: ProxyOptions): Proxy;
33
+ static ispFromEnv(): Proxy;
34
+ country(code: string): Proxy;
35
+ city(name: string): Proxy;
36
+ session(id: string): Proxy;
37
+ sticky(minutes: number): Proxy;
38
+ private buildUsername;
39
+ toAxiosConfig(): AxiosProxyConfig;
40
+ toString(): string;
41
+ }
@@ -0,0 +1,155 @@
1
+ const PROXY_PORTS = {
2
+ residential: 9999,
3
+ datacenter: 7777,
4
+ mobile: 5555,
5
+ isp: 6666,
6
+ };
7
+ const PROXY_HOSTS = {
8
+ residential: "t.pr.thordata.net",
9
+ datacenter: "dc.pr.thordata.net",
10
+ mobile: "m.pr.thordata.net",
11
+ isp: "isp.pr.thordata.net",
12
+ };
13
+ export class Proxy {
14
+ product;
15
+ credentials;
16
+ opts;
17
+ staticConfig;
18
+ constructor(product, credentials, opts = {}, staticConfig) {
19
+ this.product = product;
20
+ this.credentials = credentials;
21
+ this.opts = opts;
22
+ this.staticConfig = staticConfig;
23
+ }
24
+ // Factory methods for dynamic proxies
25
+ static residential(creds, opts) {
26
+ return new Proxy("residential", creds, opts);
27
+ }
28
+ static datacenter(creds, opts) {
29
+ return new Proxy("datacenter", creds, opts);
30
+ }
31
+ static mobile(creds, opts) {
32
+ return new Proxy("mobile", creds, opts);
33
+ }
34
+ // Factory method for static ISP proxy (direct IP connection, port always 6666)
35
+ static isp(config) {
36
+ return new Proxy("isp", { username: config.username, password: config.password }, {}, config);
37
+ }
38
+ // FromEnv helpers
39
+ static residentialFromEnv(opts) {
40
+ const username = process.env.THORDATA_RESIDENTIAL_USERNAME;
41
+ const password = process.env.THORDATA_RESIDENTIAL_PASSWORD;
42
+ if (!username || !password) {
43
+ throw new Error("THORDATA_RESIDENTIAL_USERNAME and THORDATA_RESIDENTIAL_PASSWORD are required");
44
+ }
45
+ return new Proxy("residential", { username, password }, opts);
46
+ }
47
+ static datacenterFromEnv(opts) {
48
+ const username = process.env.THORDATA_DATACENTER_USERNAME;
49
+ const password = process.env.THORDATA_DATACENTER_PASSWORD;
50
+ if (!username || !password) {
51
+ throw new Error("THORDATA_DATACENTER_USERNAME and THORDATA_DATACENTER_PASSWORD are required");
52
+ }
53
+ return new Proxy("datacenter", { username, password }, opts);
54
+ }
55
+ static mobileFromEnv(opts) {
56
+ const username = process.env.THORDATA_MOBILE_USERNAME;
57
+ const password = process.env.THORDATA_MOBILE_PASSWORD;
58
+ if (!username || !password) {
59
+ throw new Error("THORDATA_MOBILE_USERNAME and THORDATA_MOBILE_PASSWORD are required");
60
+ }
61
+ return new Proxy("mobile", { username, password }, opts);
62
+ }
63
+ static ispFromEnv() {
64
+ const host = process.env.THORDATA_ISP_HOST;
65
+ const username = process.env.THORDATA_ISP_USERNAME;
66
+ const password = process.env.THORDATA_ISP_PASSWORD;
67
+ if (!host || !username || !password) {
68
+ throw new Error("THORDATA_ISP_HOST, THORDATA_ISP_USERNAME, and THORDATA_ISP_PASSWORD are required");
69
+ }
70
+ return Proxy.isp({ host, username, password });
71
+ }
72
+ // Chainable options (only for dynamic proxies)
73
+ country(code) {
74
+ if (this.staticConfig) {
75
+ throw new Error("country() is not supported for static ISP proxies");
76
+ }
77
+ this.opts.country = code.toLowerCase();
78
+ return this;
79
+ }
80
+ city(name) {
81
+ if (this.staticConfig) {
82
+ throw new Error("city() is not supported for static ISP proxies");
83
+ }
84
+ this.opts.city = name.toLowerCase().replace(/\s+/g, "_");
85
+ return this;
86
+ }
87
+ session(id) {
88
+ if (this.staticConfig) {
89
+ throw new Error("session() is not supported for static ISP proxies");
90
+ }
91
+ this.opts.session = id;
92
+ return this;
93
+ }
94
+ sticky(minutes) {
95
+ if (this.staticConfig) {
96
+ throw new Error("sticky() is not supported for static ISP proxies");
97
+ }
98
+ if (minutes < 1 || minutes > 90) {
99
+ throw new Error("sticky minutes must be between 1 and 90");
100
+ }
101
+ if (!this.opts.session) {
102
+ throw new Error("session() must be called before sticky()");
103
+ }
104
+ this.opts.stickyMinutes = minutes;
105
+ return this;
106
+ }
107
+ // Build the full username with geo/session parameters
108
+ buildUsername() {
109
+ if (this.staticConfig) {
110
+ return this.credentials.username;
111
+ }
112
+ const parts = [`td-customer-${this.credentials.username}`];
113
+ if (this.opts.country) {
114
+ parts.push(`country-${this.opts.country}`);
115
+ }
116
+ if (this.opts.city) {
117
+ parts.push(`city-${this.opts.city}`);
118
+ }
119
+ if (this.opts.session) {
120
+ parts.push(`sessid-${this.opts.session}`);
121
+ }
122
+ if (this.opts.stickyMinutes) {
123
+ parts.push(`sesstime-${this.opts.stickyMinutes}`);
124
+ }
125
+ return parts.join("-");
126
+ }
127
+ // Generate axios proxy config
128
+ toAxiosConfig() {
129
+ if (this.staticConfig) {
130
+ return {
131
+ host: this.staticConfig.host,
132
+ port: PROXY_PORTS.isp, // Always 6666
133
+ auth: {
134
+ username: this.credentials.username,
135
+ password: this.credentials.password,
136
+ },
137
+ };
138
+ }
139
+ return {
140
+ host: PROXY_HOSTS[this.product],
141
+ port: PROXY_PORTS[this.product],
142
+ auth: {
143
+ username: this.buildUsername(),
144
+ password: this.credentials.password,
145
+ },
146
+ };
147
+ }
148
+ toString() {
149
+ if (this.staticConfig) {
150
+ return `[Proxy isp static ${this.staticConfig.host}:${PROXY_PORTS.isp}]`;
151
+ }
152
+ return `[Proxy ${this.product} ${this.opts.country || "random"}]`;
153
+ }
154
+ }
155
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/proxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { ThordataClient } from "./client.js";
2
+ import { Proxy } from "./proxy.js";
3
+ export declare class Thordata extends ThordataClient {
4
+ constructor(token?: string);
5
+ static Proxy: typeof Proxy;
6
+ }
7
+ export default Thordata;
@@ -0,0 +1,16 @@
1
+ // src/thordata.ts
2
+ import { ThordataClient } from "./client.js";
3
+ import { Proxy } from "./proxy.js";
4
+ export class Thordata extends ThordataClient {
5
+ constructor(token) {
6
+ const finalToken = token || process.env.THORDATA_TOKEN || process.env.THORDATA_SCRAPER_TOKEN;
7
+ if (!finalToken) {
8
+ throw new Error("Thordata token not provided. Pass it to constructor or set THORDATA_TOKEN environment variable.");
9
+ }
10
+ super({ scraperToken: finalToken });
11
+ }
12
+ // Expose Proxy class for easy access
13
+ static Proxy = Proxy;
14
+ }
15
+ export default Thordata;
16
+ //# sourceMappingURL=thordata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thordata.js","sourceRoot":"","sources":["../../src/thordata.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,OAAO,QAAS,SAAQ,cAAc;IAC1C,YAAY,KAAc;QACxB,MAAM,UAAU,GAAG,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;QAE7F,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,iGAAiG,CAClG,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,qCAAqC;IACrC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;;AAGvB,eAAe,QAAQ,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "thordata-js-sdk",
4
- "version": "0.1.0",
4
+ "version": "0.2.0",
5
5
  "description": "Official JavaScript/TypeScript SDK for Thordata (SERP, Universal, Web Scraper).",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",