From a4e016b36c31c83bbb03533be7c3976ce0662fce Mon Sep 17 00:00:00 2001 From: Kevin Pham Date: Tue, 21 Nov 2023 20:33:52 -0600 Subject: [PATCH] add common referrer options --- .../spoof_referrer_from_baidu_post.go | 44 +++++++++++++++++++ .../spoof_referrer_from_bing_search.go | 19 ++++++++ .../spoof_referrer_from_google_search.go | 19 ++++++++ .../spoof_referrer_from_linkedin_post.go | 21 +++++++++ .../spoof_referrer_from_naver_post.go | 24 ++++++++++ .../spoof_referrer_from_pinterest_post.go | 19 ++++++++ .../spoof_referrer_from_qq_post.go | 19 ++++++++ .../spoof_referrer_from_reddit_post.go | 19 ++++++++ .../spoof_referrer_from_tumblr_post.go | 19 ++++++++ .../spoof_referrer_from_twitter_post.go | 19 ++++++++ .../spoof_referrer_from_vkontake_post.go | 19 ++++++++ .../spoof_referrer_from_weibo_post.go | 22 ++++++++++ 12 files changed, 263 insertions(+) create mode 100644 proxychain/requestmodifers/spoof_referrer_from_baidu_post.go create mode 100644 proxychain/requestmodifers/spoof_referrer_from_bing_search.go create mode 100644 proxychain/requestmodifers/spoof_referrer_from_google_search.go create mode 100644 proxychain/requestmodifers/spoof_referrer_from_linkedin_post.go create mode 100644 proxychain/requestmodifers/spoof_referrer_from_naver_post.go create mode 100644 proxychain/requestmodifers/spoof_referrer_from_pinterest_post.go create mode 100644 proxychain/requestmodifers/spoof_referrer_from_qq_post.go create mode 100644 proxychain/requestmodifers/spoof_referrer_from_reddit_post.go create mode 100644 proxychain/requestmodifers/spoof_referrer_from_tumblr_post.go create mode 100644 proxychain/requestmodifers/spoof_referrer_from_twitter_post.go create mode 100644 proxychain/requestmodifers/spoof_referrer_from_vkontake_post.go create mode 100644 proxychain/requestmodifers/spoof_referrer_from_weibo_post.go diff --git a/proxychain/requestmodifers/spoof_referrer_from_baidu_post.go b/proxychain/requestmodifers/spoof_referrer_from_baidu_post.go new file mode 100644 index 0000000..b310062 --- /dev/null +++ b/proxychain/requestmodifers/spoof_referrer_from_baidu_post.go @@ -0,0 +1,44 @@ +package requestmodifers + +import ( + "fmt" + "ladder/proxychain" + "math/rand" + "strings" + "time" +) + +// SpoofReferrerFromBaiduSearch modifies the referrer header +// pretending to be from a BaiduSearch +func SpoofReferrerFromBaiduSearch(url string) 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"), + ) + return nil + } +} + +// utility functions ================== + +func generateRandomString(charset string, length int) string { + var seededRand *rand.Rand = rand.New(rand.NewSource(time.Now().UnixNano())) + var stringBuilder strings.Builder + for i := 0; i < length; i++ { + stringBuilder.WriteByte(charset[seededRand.Intn(len(charset))]) + } + return stringBuilder.String() +} + +func generateRandomBaiduURL() string { + const alphanumericCharset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + const hexCharset = "0123456789abcdef" + randomAlphanumeric := generateRandomString(alphanumericCharset, 30) // Length before "-" + randomHex := generateRandomString(hexCharset, 16) // Length of eqid + return randomAlphanumeric + "-" + "&wd=&eqid=" + randomHex +} diff --git a/proxychain/requestmodifers/spoof_referrer_from_bing_search.go b/proxychain/requestmodifers/spoof_referrer_from_bing_search.go new file mode 100644 index 0000000..563ce0e --- /dev/null +++ b/proxychain/requestmodifers/spoof_referrer_from_bing_search.go @@ -0,0 +1,19 @@ +package requestmodifers + +import ( + "ladder/proxychain" +) + +// SpoofReferrerFromBingSearch modifies the referrer header +// pretending to be from a bing search site +func SpoofReferrerFromBingSearch(url string) proxychain.RequestModification { + return func(chain *proxychain.ProxyChain) error { + chain.AddRequestModifications( + SpoofReferrer("https://www.bing.com/"), + SetRequestHeader("sec-fetch-site", "cross-site"), + SetRequestHeader("sec-fetch-dest", "document"), + SetRequestHeader("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 new file mode 100644 index 0000000..0c68dfe --- /dev/null +++ b/proxychain/requestmodifers/spoof_referrer_from_google_search.go @@ -0,0 +1,19 @@ +package requestmodifers + +import ( + "ladder/proxychain" +) + +// SpoofReferrerFromGoogleSearch modifies the referrer header +// pretending to be from a google search site +func SpoofReferrerFromGoogleSearch(url string) 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"), + ) + return nil + } +} diff --git a/proxychain/requestmodifers/spoof_referrer_from_linkedin_post.go b/proxychain/requestmodifers/spoof_referrer_from_linkedin_post.go new file mode 100644 index 0000000..30c26c8 --- /dev/null +++ b/proxychain/requestmodifers/spoof_referrer_from_linkedin_post.go @@ -0,0 +1,21 @@ +package requestmodifers + +import ( + "ladder/proxychain" +) + +// SpoofReferrerFromLinkedInPost modifies the referrer header +// pretending to be from a linkedin post +func SpoofReferrerFromLinkedInPost(url string) proxychain.RequestModification { + return func(chain *proxychain.ProxyChain) error { + chain.AddRequestModifications( + SpoofReferrer("https://www.linkedin.com/"), + SetRequestHeader("sec-fetch-site", "cross-site"), + SetRequestHeader("sec-fetch-dest", "document"), + SetRequestHeader("sec-fetch-mode", "navigate"), + ModifyQueryParams("utm_campaign", "post"), + ModifyQueryParams("utm_medium", "web"), + ) + return nil + } +} diff --git a/proxychain/requestmodifers/spoof_referrer_from_naver_post.go b/proxychain/requestmodifers/spoof_referrer_from_naver_post.go new file mode 100644 index 0000000..9bc32d6 --- /dev/null +++ b/proxychain/requestmodifers/spoof_referrer_from_naver_post.go @@ -0,0 +1,24 @@ +package requestmodifers + +import ( + "fmt" + "ladder/proxychain" +) + +// SpoofReferrerFromNaverSearch modifies the referrer header +// pretending to be from a Naver search (popular in South Korea) +func SpoofReferrerFromNaverSearch(url string) proxychain.RequestModification { + return func(chain *proxychain.ProxyChain) error { + referrer := fmt.Sprintf( + "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"), + ) + return nil + } +} diff --git a/proxychain/requestmodifers/spoof_referrer_from_pinterest_post.go b/proxychain/requestmodifers/spoof_referrer_from_pinterest_post.go new file mode 100644 index 0000000..8a3b55b --- /dev/null +++ b/proxychain/requestmodifers/spoof_referrer_from_pinterest_post.go @@ -0,0 +1,19 @@ +package requestmodifers + +import ( + "ladder/proxychain" +) + +// SpoofReferrerFromPinterestPost modifies the referrer header +// pretending to be from a pinterest post +func SpoofReferrerFromPinterestPost(url string) 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"), + ) + return nil + } +} diff --git a/proxychain/requestmodifers/spoof_referrer_from_qq_post.go b/proxychain/requestmodifers/spoof_referrer_from_qq_post.go new file mode 100644 index 0000000..ce078b1 --- /dev/null +++ b/proxychain/requestmodifers/spoof_referrer_from_qq_post.go @@ -0,0 +1,19 @@ +package requestmodifers + +import ( + "ladder/proxychain" +) + +// SpoofReferrerFromQQPost modifies the referrer header +// pretending to be from a QQ post (popular social media in China) +func SpoofReferrerFromQQPost(url string) 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"), + ) + return nil + } +} diff --git a/proxychain/requestmodifers/spoof_referrer_from_reddit_post.go b/proxychain/requestmodifers/spoof_referrer_from_reddit_post.go new file mode 100644 index 0000000..b30bf2f --- /dev/null +++ b/proxychain/requestmodifers/spoof_referrer_from_reddit_post.go @@ -0,0 +1,19 @@ +package requestmodifers + +import ( + "ladder/proxychain" +) + +// SpoofReferrerFromRedditPost modifies the referrer header +// pretending to be from a reddit post +func SpoofReferrerFromRedditPost(url string) 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"), + ) + return nil + } +} diff --git a/proxychain/requestmodifers/spoof_referrer_from_tumblr_post.go b/proxychain/requestmodifers/spoof_referrer_from_tumblr_post.go new file mode 100644 index 0000000..ebe131e --- /dev/null +++ b/proxychain/requestmodifers/spoof_referrer_from_tumblr_post.go @@ -0,0 +1,19 @@ +package requestmodifers + +import ( + "ladder/proxychain" +) + +// SpoofReferrerFromTumblrPost modifies the referrer header +// pretending to be from a tumblr post +func SpoofReferrerFromTumblrPost(url string) proxychain.RequestModification { + return func(chain *proxychain.ProxyChain) error { + chain.AddRequestModifications( + SpoofReferrer("https://www.tumblr.com/"), + SetRequestHeader("sec-fetch-site", "cross-site"), + SetRequestHeader("sec-fetch-dest", "document"), + SetRequestHeader("sec-fetch-mode", "navigate"), + ) + return nil + } +} diff --git a/proxychain/requestmodifers/spoof_referrer_from_twitter_post.go b/proxychain/requestmodifers/spoof_referrer_from_twitter_post.go new file mode 100644 index 0000000..e5fcb21 --- /dev/null +++ b/proxychain/requestmodifers/spoof_referrer_from_twitter_post.go @@ -0,0 +1,19 @@ +package requestmodifers + +import ( + "ladder/proxychain" +) + +// SpoofReferrerFromTwitterPost modifies the referrer header +// pretending to be from a twitter post +func SpoofReferrerFromTwitterPost(url string) proxychain.RequestModification { + return func(chain *proxychain.ProxyChain) error { + chain.AddRequestModifications( + SpoofReferrer("https://t.co/"), + SetRequestHeader("sec-fetch-site", "cross-site"), + SetRequestHeader("sec-fetch-dest", "document"), + SetRequestHeader("sec-fetch-mode", "navigate"), + ) + return nil + } +} diff --git a/proxychain/requestmodifers/spoof_referrer_from_vkontake_post.go b/proxychain/requestmodifers/spoof_referrer_from_vkontake_post.go new file mode 100644 index 0000000..6079b30 --- /dev/null +++ b/proxychain/requestmodifers/spoof_referrer_from_vkontake_post.go @@ -0,0 +1,19 @@ +package requestmodifers + +import ( + "ladder/proxychain" +) + +// SpoofReferrerFromVkontaktePost modifies the referrer header +// pretending to be from a vkontakte post (popular in Russia) +func SpoofReferrerFromVkontaktePost(url string) proxychain.RequestModification { + return func(chain *proxychain.ProxyChain) error { + chain.AddRequestModifications( + SpoofReferrer("https://away.vk.com/"), + SetRequestHeader("sec-fetch-site", "cross-site"), + SetRequestHeader("sec-fetch-dest", "document"), + SetRequestHeader("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 new file mode 100644 index 0000000..0b1904d --- /dev/null +++ b/proxychain/requestmodifers/spoof_referrer_from_weibo_post.go @@ -0,0 +1,22 @@ +package requestmodifers + +import ( + "fmt" + "ladder/proxychain" + "math/rand" +) + +// SpoofReferrerFromWeiboPost modifies the referrer header +// pretending to be from a Weibo post (popular in China) +func SpoofReferrerFromWeiboPost(url string) 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"), + ) + return nil + } +}