8
8
"io"
9
9
"net/url"
10
10
"os"
11
+ "strings"
11
12
12
13
scraper "github.com/promptapi/scraper-go"
13
14
)
26
27
optCookie * string
27
28
optReferer * string
28
29
optSelector * string
30
+ optHeaders headersFlag
29
31
30
32
usage = `
31
33
usage: scraper-cli [flags...]
@@ -58,6 +60,7 @@ usage: scraper-cli [flags...]
58
60
-referer HTTP referer header
59
61
-selector CSS style selector path such as: a.btn div li
60
62
-version display version information
63
+ -header request header(s)
61
64
-help, -h display help
62
65
63
66
@@ -70,11 +73,24 @@ usage: scraper-cli [flags...]
70
73
71
74
$ PROMPTAPI_TOKEN="your-api-key" scraper-cli -url "https://promptapi.com"
72
75
$ scraper-cli -url "https://promptapi.com" -token "your-api-key"
76
+ $ scraper-cli -url "https://promptapi.com" -token "your-api-key" -header "X-Referer: https://www.google.com"
77
+ $ scraper-cli -url "https://promptapi.com" -token "your-api-key" -header "X-Referer: https://www.google.com" -header "X-Custom-Header: Hello"
73
78
74
79
75
80
`
76
81
)
77
82
83
+ type headersFlag []string
84
+
85
+ func (h * headersFlag ) String () string {
86
+ return "headers"
87
+ }
88
+
89
+ func (h * headersFlag ) Set (value string ) error {
90
+ * h = append (* h , strings .TrimSpace (value ))
91
+ return nil
92
+ }
93
+
78
94
// CLIApplication represents app structure
79
95
type CLIApplication struct {
80
96
Out io.Writer
@@ -94,6 +110,7 @@ func NewCLIApplication() *CLIApplication {
94
110
optCookie = flag .String ("cookie" , "n/a" , "URL Encoded cookie header" )
95
111
optReferer = flag .String ("referer" , "n/a" , "HTTP referer header" )
96
112
optSelector = flag .String ("selector" , "n/a" , "CSS style selector path such as: a.btn div li" )
113
+ flag .Var (& optHeaders , "header" , "" )
97
114
98
115
flag .Parse ()
99
116
@@ -164,7 +181,19 @@ func (c *CLIApplication) Scrape() error {
164
181
}
165
182
166
183
result := new (scraper.Result )
167
- err := s .Scrape (params , result )
184
+ extraHeaders := []* scraper.ExtraHeader {}
185
+
186
+ if len (optHeaders ) > 0 {
187
+ for _ , headerValue := range optHeaders {
188
+ valuePair := strings .Split (headerValue , ":" )
189
+ reqHeader := new (scraper.ExtraHeader )
190
+ reqHeader .Name = valuePair [0 ]
191
+ reqHeader .Value = valuePair [1 ]
192
+ extraHeaders = append (extraHeaders , reqHeader )
193
+ }
194
+ }
195
+
196
+ err := s .Scrape (params , extraHeaders , result )
168
197
if err != nil {
169
198
return err
170
199
}
0 commit comments