add response / request modifier API to only fire once
This commit is contained in:
@@ -21,13 +21,11 @@ func MasqueradeAsBingBot() proxychain.RequestModification {
|
||||
}
|
||||
|
||||
func masqueradeAsTrustedBot(botUA string, botIP string) proxychain.RequestModification {
|
||||
return func(px *proxychain.ProxyChain) error {
|
||||
px.AddRequestModifications(
|
||||
SpoofUserAgent(botUA),
|
||||
SpoofXForwardedFor(botIP),
|
||||
SpoofReferrer(""),
|
||||
SpoofOrigin(""),
|
||||
)
|
||||
return func(chain *proxychain.ProxyChain) error {
|
||||
chain.Request.Header.Set("user-agent", botUA)
|
||||
chain.Request.Header.Set("x-forwarded-for", botIP)
|
||||
chain.Request.Header.Del("referrer")
|
||||
chain.Request.Header.Del("origin")
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package requestmodifers
|
||||
|
||||
import (
|
||||
"ladder/proxychain"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
// ModifyQueryParams replaces query parameter values in URL's query params in a ProxyChain's URL.
|
||||
@@ -9,12 +10,16 @@ import (
|
||||
func ModifyQueryParams(key string, value string) proxychain.RequestModification {
|
||||
return func(px *proxychain.ProxyChain) error {
|
||||
q := px.Request.URL.Query()
|
||||
px.Request.URL.RawQuery = modifyQueryParams(key, value, q)
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func modifyQueryParams(key string, value string, q url.Values) string {
|
||||
if value == "" {
|
||||
q.Del(key)
|
||||
return nil
|
||||
return q.Encode()
|
||||
}
|
||||
q.Set(key, value)
|
||||
px.Request.URL.RawQuery = q.Encode()
|
||||
return nil
|
||||
}
|
||||
return q.Encode()
|
||||
}
|
||||
|
||||
@@ -14,12 +14,10 @@ func SpoofReferrerFromBaiduSearch() proxychain.RequestModification {
|
||||
return func(chain *proxychain.ProxyChain) error {
|
||||
// https://www.baidu.com/link?url=5biIeDvUIihawf3Zbbysach2Xn4H3w3FzO6LZKgSs-B5Yt4M4RUFikokOk5zetf2&wd=&eqid=9da80d8208009b8480000706655d5ed6
|
||||
referrer := fmt.Sprintf("https://baidu.com/link?url=%s", generateRandomBaiduURL())
|
||||
chain.AddRequestModifications(
|
||||
SpoofReferrer(referrer),
|
||||
SetRequestHeader("sec-fetch-site", "cross-site"),
|
||||
SetRequestHeader("sec-fetch-dest", "document"),
|
||||
SetRequestHeader("sec-fetch-mode", "navigate"),
|
||||
)
|
||||
chain.Request.Header.Set("referrer", referrer)
|
||||
chain.Request.Header.Set("sec-fetch-site", "cross-site")
|
||||
chain.Request.Header.Set("sec-fetch-dest", "document")
|
||||
chain.Request.Header.Set("sec-fetch-mode", "navigate")
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,13 +8,11 @@ import (
|
||||
// pretending to be from a google search site
|
||||
func SpoofReferrerFromGoogleSearch() proxychain.RequestModification {
|
||||
return func(chain *proxychain.ProxyChain) error {
|
||||
chain.AddRequestModifications(
|
||||
SpoofReferrer("https://www.google.com/"),
|
||||
SetRequestHeader("sec-fetch-site", "cross-site"),
|
||||
SetRequestHeader("sec-fetch-dest", "document"),
|
||||
SetRequestHeader("sec-fetch-mode", "navigate"),
|
||||
ModifyQueryParams("utm_source", "google"),
|
||||
)
|
||||
chain.Request.Header.Set("referrer", "https://www.google.com/")
|
||||
chain.Request.Header.Set("sec-fetch-site", "cross-site")
|
||||
chain.Request.Header.Set("sec-fetch-dest", "document")
|
||||
chain.Request.Header.Set("sec-fetch-mode", "navigate")
|
||||
ModifyQueryParams("utm_source", "google")
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,12 +13,10 @@ func SpoofReferrerFromNaverSearch() proxychain.RequestModification {
|
||||
"https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=%s",
|
||||
chain.Request.URL.Host,
|
||||
)
|
||||
chain.AddRequestModifications(
|
||||
SpoofReferrer(referrer),
|
||||
SetRequestHeader("sec-fetch-site", "cross-site"),
|
||||
SetRequestHeader("sec-fetch-dest", "document"),
|
||||
SetRequestHeader("sec-fetch-mode", "navigate"),
|
||||
)
|
||||
chain.Request.Header.Set("referrer", referrer)
|
||||
chain.Request.Header.Set("sec-fetch-site", "cross-site")
|
||||
chain.Request.Header.Set("sec-fetch-dest", "document")
|
||||
chain.Request.Header.Set("sec-fetch-mode", "navigate")
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,12 +8,10 @@ import (
|
||||
// pretending to be from a pinterest post
|
||||
func SpoofReferrerFromPinterestPost() proxychain.RequestModification {
|
||||
return func(chain *proxychain.ProxyChain) error {
|
||||
chain.AddRequestModifications(
|
||||
SpoofReferrer("https://www.pinterest.com/"),
|
||||
SetRequestHeader("sec-fetch-site", "cross-site"),
|
||||
SetRequestHeader("sec-fetch-dest", "document"),
|
||||
SetRequestHeader("sec-fetch-mode", "navigate"),
|
||||
)
|
||||
chain.Request.Header.Set("referrer", "https://www.pinterest.com/")
|
||||
chain.Request.Header.Set("sec-fetch-site", "cross-site")
|
||||
chain.Request.Header.Set("sec-fetch-dest", "document")
|
||||
chain.Request.Header.Set("sec-fetch-mode", "navigate")
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,12 +8,9 @@ import (
|
||||
// pretending to be from a QQ post (popular social media in China)
|
||||
func SpoofReferrerFromQQPost() proxychain.RequestModification {
|
||||
return func(chain *proxychain.ProxyChain) error {
|
||||
chain.AddRequestModifications(
|
||||
SpoofReferrer("https://new.qq.com/'"),
|
||||
SetRequestHeader("sec-fetch-site", "cross-site"),
|
||||
SetRequestHeader("sec-fetch-dest", "document"),
|
||||
SetRequestHeader("sec-fetch-mode", "navigate"),
|
||||
)
|
||||
chain.Request.Header.Set("referrer", "https://new.qq.com/")
|
||||
chain.Request.Header.Set("sec-fetch-site", "cross-site")
|
||||
chain.Request.Header.Set("sec-fetch-dest", "document")
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,12 +8,10 @@ import (
|
||||
// pretending to be from a reddit post
|
||||
func SpoofReferrerFromRedditPost() proxychain.RequestModification {
|
||||
return func(chain *proxychain.ProxyChain) error {
|
||||
chain.AddRequestModifications(
|
||||
SpoofReferrer("https://www.reddit.com/"),
|
||||
SetRequestHeader("sec-fetch-site", "cross-site"),
|
||||
SetRequestHeader("sec-fetch-dest", "document"),
|
||||
SetRequestHeader("sec-fetch-mode", "navigate"),
|
||||
)
|
||||
chain.Request.Header.Set("referrer", "https://www.reddit.com/")
|
||||
chain.Request.Header.Set("sec-fetch-site", "cross-site")
|
||||
chain.Request.Header.Set("sec-fetch-dest", "document")
|
||||
chain.Request.Header.Set("sec-fetch-mode", "navigate")
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,12 +11,10 @@ import (
|
||||
func SpoofReferrerFromWeiboPost() proxychain.RequestModification {
|
||||
return func(chain *proxychain.ProxyChain) error {
|
||||
referrer := fmt.Sprintf("http://weibo.com/u/%d", rand.Intn(90001))
|
||||
chain.AddRequestModifications(
|
||||
SpoofReferrer(referrer),
|
||||
SetRequestHeader("sec-fetch-site", "cross-site"),
|
||||
SetRequestHeader("sec-fetch-dest", "document"),
|
||||
SetRequestHeader("sec-fetch-mode", "navigate"),
|
||||
)
|
||||
chain.Request.Header.Set("referrer", referrer)
|
||||
chain.Request.Header.Set("sec-fetch-site", "cross-site")
|
||||
chain.Request.Header.Set("sec-fetch-dest", "document")
|
||||
chain.Request.Header.Set("sec-fetch-mode", "navigate")
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user