From fb63dba8a085746733df512340bc6cac2054405d Mon Sep 17 00:00:00 2001 From: Kevin Pham Date: Sun, 26 Nov 2023 23:15:00 -0600 Subject: [PATCH] add response / request modifier API to only fire once --- .../masquerade_as_trusted_bot.go | 12 +++++------- .../requestmodifers/modify_query_params.go | 17 +++++++++++------ .../spoof_referrer_from_baidu_post.go | 10 ++++------ .../spoof_referrer_from_google_search.go | 12 +++++------- .../spoof_referrer_from_naver_post.go | 10 ++++------ .../spoof_referrer_from_pinterest_post.go | 10 ++++------ .../spoof_referrer_from_qq_post.go | 9 +++------ .../spoof_referrer_from_reddit_post.go | 10 ++++------ .../spoof_referrer_from_weibo_post.go | 10 ++++------ 9 files changed, 44 insertions(+), 56 deletions(-) diff --git a/proxychain/requestmodifers/masquerade_as_trusted_bot.go b/proxychain/requestmodifers/masquerade_as_trusted_bot.go index 9b32c12..bb0e0f8 100644 --- a/proxychain/requestmodifers/masquerade_as_trusted_bot.go +++ b/proxychain/requestmodifers/masquerade_as_trusted_bot.go @@ -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 } } diff --git a/proxychain/requestmodifers/modify_query_params.go b/proxychain/requestmodifers/modify_query_params.go index 06d8122..7f42f65 100644 --- a/proxychain/requestmodifers/modify_query_params.go +++ b/proxychain/requestmodifers/modify_query_params.go @@ -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() - if value == "" { - q.Del(key) - return nil - } - q.Set(key, value) - px.Request.URL.RawQuery = q.Encode() + 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 q.Encode() + } + q.Set(key, value) + return q.Encode() +} diff --git a/proxychain/requestmodifers/spoof_referrer_from_baidu_post.go b/proxychain/requestmodifers/spoof_referrer_from_baidu_post.go index 1f6708f..40960eb 100644 --- a/proxychain/requestmodifers/spoof_referrer_from_baidu_post.go +++ b/proxychain/requestmodifers/spoof_referrer_from_baidu_post.go @@ -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 } } diff --git a/proxychain/requestmodifers/spoof_referrer_from_google_search.go b/proxychain/requestmodifers/spoof_referrer_from_google_search.go index 7afb246..f5ff0b2 100644 --- a/proxychain/requestmodifers/spoof_referrer_from_google_search.go +++ b/proxychain/requestmodifers/spoof_referrer_from_google_search.go @@ -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 } } diff --git a/proxychain/requestmodifers/spoof_referrer_from_naver_post.go b/proxychain/requestmodifers/spoof_referrer_from_naver_post.go index 1c3e082..ae73588 100644 --- a/proxychain/requestmodifers/spoof_referrer_from_naver_post.go +++ b/proxychain/requestmodifers/spoof_referrer_from_naver_post.go @@ -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 } } diff --git a/proxychain/requestmodifers/spoof_referrer_from_pinterest_post.go b/proxychain/requestmodifers/spoof_referrer_from_pinterest_post.go index dedf9c5..9d98c7b 100644 --- a/proxychain/requestmodifers/spoof_referrer_from_pinterest_post.go +++ b/proxychain/requestmodifers/spoof_referrer_from_pinterest_post.go @@ -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 } } diff --git a/proxychain/requestmodifers/spoof_referrer_from_qq_post.go b/proxychain/requestmodifers/spoof_referrer_from_qq_post.go index 9f90cd2..2eace11 100644 --- a/proxychain/requestmodifers/spoof_referrer_from_qq_post.go +++ b/proxychain/requestmodifers/spoof_referrer_from_qq_post.go @@ -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 } } diff --git a/proxychain/requestmodifers/spoof_referrer_from_reddit_post.go b/proxychain/requestmodifers/spoof_referrer_from_reddit_post.go index 519858a..a580f69 100644 --- a/proxychain/requestmodifers/spoof_referrer_from_reddit_post.go +++ b/proxychain/requestmodifers/spoof_referrer_from_reddit_post.go @@ -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 } } diff --git a/proxychain/requestmodifers/spoof_referrer_from_weibo_post.go b/proxychain/requestmodifers/spoof_referrer_from_weibo_post.go index 7c7e036..11ca11a 100644 --- a/proxychain/requestmodifers/spoof_referrer_from_weibo_post.go +++ b/proxychain/requestmodifers/spoof_referrer_from_weibo_post.go @@ -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 } }