improve ua modifier with client side spoofing
This commit is contained in:
@@ -1,13 +1,39 @@
|
||||
package requestmodifers
|
||||
|
||||
import (
|
||||
_ "embed"
|
||||
"ladder/proxychain"
|
||||
tx "ladder/proxychain/responsemodifers"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// https://github.com/faisalman/ua-parser-js/tree/master
|
||||
// update using:
|
||||
// git submodule update --remote --merge
|
||||
//
|
||||
//go:embed vendor/ua-parser-js/dist/ua-parser.min.js
|
||||
var UAParserJS string
|
||||
|
||||
// note: spoof_user_agent.js has a dependency on ua-parser.min.js
|
||||
// ua-parser.min.js should be loaded first.
|
||||
//
|
||||
//go:embed spoof_user_agent.js
|
||||
var spoofUserAgentJS string
|
||||
|
||||
// SpoofUserAgent modifies the user agent
|
||||
func SpoofUserAgent(ua string) proxychain.RequestModification {
|
||||
return func(px *proxychain.ProxyChain) error {
|
||||
px.Request.Header.Set("user-agent", ua)
|
||||
return func(chain *proxychain.ProxyChain) error {
|
||||
// modify ua headers
|
||||
chain.AddOnceRequestModifications(
|
||||
SetRequestHeader("user-agent", ua),
|
||||
)
|
||||
|
||||
script := strings.ReplaceAll(spoofUserAgentJS, "{{USER_AGENT}}", ua)
|
||||
chain.AddOnceResponseModifications(
|
||||
tx.InjectScriptBeforeDOMContentLoaded(script),
|
||||
tx.InjectScriptBeforeDOMContentLoaded(UAParserJS),
|
||||
)
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user