@@ -17,7 +17,12 @@ import { NODE_LIBCURL_BINDING } from './binding'
17
17
import { Easy } from './Easy'
18
18
import { Multi } from './Multi'
19
19
import { Share } from './Share'
20
- import { type Browser , getCurlOptionsFromBrowser } from './impersonate'
20
+ import {
21
+ type Browser ,
22
+ getCurlOptionsFromBrowser ,
23
+ getCurlOptionsFromBrowserConfig ,
24
+ type ImpersonateConfig ,
25
+ } from './impersonate'
21
26
import { mergeChunks } from './mergeChunks'
22
27
import { parseHeaders , HeaderInfo } from './parseHeaders'
23
28
import {
@@ -1095,10 +1100,15 @@ class Curl extends EventEmitter {
1095
1100
return size * nmemb
1096
1101
}
1097
1102
1098
- static impersonate ( browser : Browser ) {
1103
+ static impersonate ( browserOrImpersonateConfig : Browser | ImpersonateConfig ) {
1104
+ let options : CurlOptionValueType
1105
+ if ( typeof browserOrImpersonateConfig === 'string' ) {
1106
+ options = getCurlOptionsFromBrowser ( browserOrImpersonateConfig )
1107
+ } else {
1108
+ options = getCurlOptionsFromBrowserConfig ( browserOrImpersonateConfig )
1109
+ }
1099
1110
const handle = new Curl ( )
1100
- const curlOptions = getCurlOptionsFromBrowser ( browser )
1101
- for ( const [ option , value ] of Object . entries ( curlOptions ) ) {
1111
+ for ( const [ option , value ] of Object . entries ( options ) ) {
1102
1112
// @ts -expect-error todo make type safe
1103
1113
handle . setOpt ( option , value )
1104
1114
}
0 commit comments