实装random useragent

This commit is contained in:
M09Ic 2023-03-24 14:20:31 +08:00
parent bdc793c75b
commit 4a12286beb
5 changed files with 143 additions and 112 deletions

View File

@ -149,6 +149,7 @@ func (opt *Option) PrepareRunner() (*Runner, error) {
Active: opt.Active,
Bak: opt.Bak,
Common: opt.Common,
RandomUserAgent: opt.RandomUserAgent,
}
// log and bar

View File

@ -16,6 +16,7 @@ import (
"github.com/panjf2000/ants/v2"
"github.com/valyala/fasthttp"
"golang.org/x/time/rate"
"math/rand"
"net/url"
"path"
"strings"
@ -61,7 +62,7 @@ func NewPool(ctx context.Context, config *pkg.Config) (*Pool, error) {
limiter: rate.NewLimiter(rate.Limit(config.RateLimit), 1),
failedCount: 1,
}
rand.Seed(time.Now().UnixNano())
// 格式化dir, 保证至少有一个"/"
if strings.HasSuffix(config.BaseURL, "/") {
pool.dir = pool.url.Path
@ -257,7 +258,10 @@ func (pool *Pool) Invoke(v interface{}) {
logs.Log.Error(err.Error())
return
}
req.SetHeaders(pool.Headers)
req.SetHeader("User-Agent", RandomUA())
start := time.Now()
resp, reqerr := pool.client.Do(pool.ctx, req)
if pool.ClientType == ihttp.FAST {

View File

@ -79,6 +79,7 @@ type Runner struct {
Active bool
Bak bool
Common bool
RandomUserAgent bool
}
func (r *Runner) PrepareConfig() *pkg.Config {
@ -104,6 +105,7 @@ func (r *Runner) PrepareConfig() *pkg.Config {
Bak: r.Bak,
Common: r.Common,
ClientType: r.ClientType,
RandomUserAgent: r.RandomUserAgent,
}
if config.ClientType == 0 {

View File

@ -6,12 +6,31 @@ import (
"github.com/chainreactors/words/mask"
"github.com/chainreactors/words/rule"
"io/ioutil"
"math/rand"
"net/url"
"path"
"strconv"
"strings"
)
var (
randomUserAgent = []string{
"Mozilla/5.0 (Linux; Android 8.0.0; SM-G960F Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36",
"Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1",
"Mozilla/5.0 (Windows Phone 10.0; Android 6.0.1; Microsoft; RM-1152) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Mobile Safari/537.36 Edge/15.15254",
"Mozilla/5.0 (Linux; Android 7.0; Pixel C Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/52.0.2743.98 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246",
"Mozilla/5.0 (X11; CrOS x86_64 8172.45.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.64 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36",
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1",
"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",
"Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)",
"Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)",
}
uacount = len(randomUserAgent)
)
func parseExtension(s string) string {
if i := strings.Index(s, "."); i != -1 {
return s[i+1:]
@ -232,3 +251,7 @@ func FormatURL(base, u string) string {
return relaPath(base, u)
}
}
func RandomUA() string {
return randomUserAgent[rand.Intn(uacount)]
}

View File

@ -44,4 +44,5 @@ type Config struct {
Active bool
Bak bool
Common bool
RandomUserAgent bool
}