Skip to content

Commit 7d430ed

Browse files
authored
Merge pull request #217 from alyssazieli3/user-agent-rotation
feat: user-agent rotation in existing modules' headers
2 parents 0157c91 + 5d1a97a commit 7d430ed

22 files changed

Lines changed: 60 additions & 25 deletions

user_scanner/core/helpers.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,3 +199,21 @@ def get_proxy_count() -> int:
199199
return _proxy_manager.count()
200200
return 0
201201

202+
203+
# Function to return random user agent
204+
205+
def get_random_user_agent():
206+
agents = [ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36",
207+
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36",
208+
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36",
209+
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36 Edg/144.0.0.0",
210+
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/19.0 Safari/605.1.15",
211+
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:147.0) Gecko/20100101 Firefox/147.0",
212+
"Mozilla/5.0 (iPhone; CPU iPhone OS 19_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/19.0 Mobile/15E148 Safari/604.1",
213+
"Mozilla/5.0 (Linux; Android 15; Pixel 9 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Mobile Safari/537.36",
214+
"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Mobile Safari/537.36"
215+
]
216+
"""return random"""
217+
random_agent = random.choice(agents)
218+
return random_agent
219+

user_scanner/user_scan/creator/hashnode.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from user_scanner.core.result import Result
22
from user_scanner.core.orchestrator import generic_validate
3+
from user_scanner.core.helpers import get_random_user_agent
34

45

56
def validate_hashnode(user):
@@ -12,7 +13,7 @@ def validate_hashnode(user):
1213
}
1314

1415
headers = {
15-
'User-Agent': "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Mobile Safari/537.36",
16+
'User-Agent': get_random_user_agent(),
1617
'Accept': "application/json",
1718
'Content-Type': "application/json",
1819
'Origin': "https://hashnode.com",

user_scanner/user_scan/creator/medium.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
from user_scanner.core.orchestrator import generic_validate
22
from user_scanner.core.result import Result
3+
from user_scanner.core.helpers import get_random_user_agent
34

45

56
def validate_medium(user):
67
url = f"https://medium.com/@{user}"
78
show_url = "https://medium.com"
89

910
headers = {
10-
'User-Agent': "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36",
11+
'User-Agent': get_random_user_agent(),
1112
'Accept': "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
1213
'Accept-Encoding': "identity",
1314
'upgrade-insecure-requests': "1",

user_scanner/user_scan/creator/producthunt.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import re
22
from user_scanner.core.orchestrator import status_validate, Result
3+
from user_scanner.core.helpers import get_random_user_agent
34

45

56
def validate_producthunt(user: str) -> Result:
@@ -14,7 +15,7 @@ def validate_producthunt(user: str) -> Result:
1415
show_url = "https://producthunt.com"
1516

1617
headers = {
17-
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
18+
'User-Agent': get_random_user_agent(),
1819
'Accept': "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
1920
'Accept-Encoding': "gzip, deflate, br",
2021
'Accept-Language': "en-US,en;q=0.9",

user_scanner/user_scan/creator/substack.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import re
22
from user_scanner.core.orchestrator import status_validate, Result
3+
from user_scanner.core.helpers import get_random_user_agent
34

45

56
def validate_substack(user: str) -> Result:
@@ -15,7 +16,7 @@ def validate_substack(user: str) -> Result:
1516
show_url = "https://substack.com"
1617

1718
headers = {
18-
'User-Agent': "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Mobile Safari/537.36",
19+
'User-Agent': get_random_user_agent(),
1920
'Accept': "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
2021
'Accept-Encoding': "identity",
2122
'accept-language': "en-US,en;q=0.9",

user_scanner/user_scan/creator/twitch.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import re
33
import httpx
44
from user_scanner.core.orchestrator import generic_validate, Result
5+
from user_scanner.core.helpers import get_random_user_agent
56

67

78
def validate_twitch(user: str) -> Result:
@@ -31,7 +32,7 @@ def validate_twitch(user: str) -> Result:
3132
]
3233

3334
headers = {
34-
'User-Agent': "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Mobile Safari/537.36",
35+
'User-Agent': get_random_user_agent(),
3536
'Accept-Encoding': "identity",
3637
'Content-Type': "application/json",
3738
'sec-ch-ua-platform': "\"Android\"",

user_scanner/user_scan/dev/cratesio.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
from user_scanner.core.orchestrator import status_validate
2+
from user_scanner.core.helpers import get_random_user_agent
23

34

45
def validate_cratesio(user):
56
url = f"https://crates.io/api/v1/users/{user}"
67
show_url = "https://crates.io"
78

89
headers = {
9-
'User-Agent': "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Mobile Safari/537.36",
10+
'User-Agent': get_random_user_agent(),
1011
'Accept': "application/json",
1112
'Referer': "https://crates.io/",
1213
'sec-fetch-mode': "cors",

user_scanner/user_scan/dev/dockerhub.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
from user_scanner.core.orchestrator import status_validate
2+
from user_scanner.core.helpers import get_random_user_agent
23

34

45
def validate_dockerhub(user):
56
url = f"https://hub.docker.com/v2/users/{user}/"
67
show_url = "https://hub.docker.com"
78

89
headers = {
9-
'User-Agent': "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36",
10+
'User-Agent': get_random_user_agent(),
1011
'Accept': "application/json",
1112
}
1213

user_scanner/user_scan/dev/github.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
from user_scanner.core.orchestrator import generic_validate, Result
2+
from user_scanner.core.helpers import get_random_user_agent
23

34

45
def validate_github(user):
56
url = f"https://github.com/signup_check/username?value={user}"
67
show_url = "https://github.com"
78

89
headers = {
9-
'User-Agent': "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36",
10+
'User-Agent': get_random_user_agent(),
1011
'Accept-Encoding': "gzip, deflate, br, zstd",
1112
'sec-ch-ua-platform': "\"Linux\"",
1213
'sec-ch-ua': "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"Google Chrome\";v=\"140\"",

user_scanner/user_scan/dev/gitlab.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
from user_scanner.core.orchestrator import generic_validate
22
from user_scanner.core.result import Result
3+
from user_scanner.core.helpers import get_random_user_agent
34

45

56
def validate_gitlab(user):
67
url = f"https://gitlab.com/users/{user}/exists"
78
show_url = "https://gitlab.com"
89

910
headers = {
10-
'User-Agent': "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36",
11+
'User-Agent': get_random_user_agent(),
1112
'Accept': "application/json, text/plain, */*",
1213
'X-Requested-With': "XMLHttpRequest",
1314
'Referer': "https://gitlab.com/users/sign_up",

0 commit comments

Comments
 (0)