Which Holehe Modules Require User-Agent Strings: Complete Module Reference
Almost every Holehe module that performs web requests requires a User-Agent header, sourcing values from holehe/localuseragent.py and injecting them into HTTP request headers to mimic legitimate browsers.
Holehe is an open-source OSINT tool for checking email address usage across online services. Understanding which modules require User-Agent strings helps developers debug request failures, customize headers, or identify why certain checks might be blocked by target services.
How Holehe Implements User-Agent Headers
The User-Agent injection pattern is consistent across the megadose/holehe codebase. Each module constructs a headers dictionary using randomly selected browser strings from the centralized ua dictionary.
In holehe/localuseragent.py, the ua object contains categorized browser strings:
import random
from holehe.localuseragent import ua
headers = {
"User-Agent": random.choice(ua["browsers"]["chrome"]),
"Accept": "application/json",
}
response = requests.get(url, headers=headers)
This pattern appears in virtually every module performing HTTP requests. The random.choice() call selects from chrome, firefox, safari, iOS, and other browser categories to rotate signatures and avoid detection.
Social Media Modules Requiring User-Agent
The largest category of modules with explicit User-Agent requirements covers social platforms. These modules implement the header pattern in holehe/modules/social_media/:
- facebook.py – Meta's platform detection
- instagram.py – Image-based social network checking
- snapchat.py – Ephemeral messaging service
- discord.py – Gaming and community platform
- twitter/xing.py – Professional and microblogging networks
- tumblr.py, wattpad.py, strava.py – Content and fitness communities
- imgur.py, bitmoji.py, fanpop.py – Media sharing services
- myspace.py, odnoklassniki.py, taringa.py – Regional social networks
- patreon.py, plurk.py, tellonym.py, crevado.py – Creator and niche platforms
Each file constructs headers using the ua dictionary before making authentication or existence checks against their respective APIs.
Software and Service Modules
Multiple productivity and software platforms require browser-like headers:
| Module | File Path | Category |
|---|---|---|
| adobe.py | holehe/modules/software/adobe.py |
Creative Cloud |
| docker.py | holehe/modules/software/docker.py |
Container registry |
| office365.py | holehe/modules/software/office365.py |
Microsoft services |
| lastpass.py | holehe/modules/software/lastpass.py |
Password manager |
| archive.py | holehe/modules/software/archive.py |
Internet Archive |
| issuu.py | holehe/modules/software/issuu.py |
Document platform |
These modules particularly need realistic User-Agent strings because enterprise services often implement stricter bot detection than consumer platforms.
E-Commerce and Shopping Platforms
Online retailers frequently block non-browser requests. Holehe's shopping modules in holehe/modules/shopping/ all implement User-Agent headers:
- ebay.py – Global marketplace
- amazon variants including regional implementations
- dominosfr.py, deliveroo.py – Food delivery services
- envato.py – Digital marketplace
- garmin.py, naturabuy.py, vivino.py – Specialized retailers
- armurerieauxerre.py – Niche e-commerce
The ebay.py module particularly relies on header rotation because its anti-bot systems aggressively filter automated requests.
Communication and Email Services
Email provider modules require User-Agent strings to access webmail interfaces and account recovery flows:
| Provider | Module File |
|---|---|
| Google/Gmail | holehe/modules/mails/google.py |
| Yahoo Mail | holehe/modules/mails/yahoo.py |
| ProtonMail | holehe/modules/mails/protonmail.py |
| Mail.ru | holehe/modules/mails/mail_ru.py |
| La Poste | holehe/modules/mails/laposte.py |
These modules check email existence through forgotten-password flows, which typically require browser-identical headers to complete successfully.
Forum and Community Platforms
The most extensive category of User-Agent-dependent modules covers internet forums in holehe/modules/forum/:
Large forum implementations:
- mybb.py – MyBB forum software detection
- phpbb variants including specialized communities
- vbulletin-based platforms across multiple niches
Specialized communities:
- koditv.py – Media center community
- cracked_to.py, cpaelites.py, cpahero.py – Marketing forums
- codeigniter.py – Developer framework community
- demonforums.py, blackworldforum.py – General discussion
- biotechnologyforums.py, biosmods.py – Technical niches
All 30+ forum modules follow identical header construction patterns to bypass common forum software bot protections like XenForo's anti-spam systems.
Entertainment and Media Modules
Content platforms with strict access controls:
- spotify.py, soundcloud.py, smule.py, blip.py, tunefind.py – Audio streaming
- pornhub.py, xvideos.py, xnxx.py, redtube.py – Adult content platforms
- flickr.py, ello.py, rambler.py, komoot.py, sporcle.py – Mixed media
The adult content modules particularly require header rotation as these platforms implement aggressive anti-scraping measures.
Transportation and Travel
Limited but significant coverage:
- blablacar.py (
holehe/modules/transport/blablacar.py) – Ridesharing platform - vrbo.py (
holehe/modules/real_estate/vrbo.py) – Vacation rentals
Both implement browser detection bypass for their search and availability endpoints.
Developer and Learning Platforms
Technical education and coding platforms:
| Platform | Module | Purpose |
|---|---|---|
| Codecademy | codecademy.py |
Coding education |
| CodePen | codepen.py |
Frontend playground |
| Replit | replit.py |
Cloud IDE |
| Team Treehouse | teamtreehouse.py |
Tech skills training |
| DevRant | devrant.py |
Developer community |
| Duolingo | duolingo.py |
Language learning |
| Quora | quora.py |
Q&A platform |
These services often expose email existence through account recovery endpoints that require realistic browser headers.
Other Notable Modules
Additional categories with User-Agent requirements:
- Payment:
venmo.py– Peer-to-peer payments - OSINT:
rocketreach.py– Professional contact finder - Medical:
sevencups.py,caringbridge.py– Support communities - Jobs:
freelancer.py,coroflot.py,seoclerks.py– Gig economy platforms - Sports:
bodybuilding.py– Fitness community
Customizing User-Agents in Holehe
To modify or inspect User-Agent behavior, examine these key files:
holehe/localuseragent.py– Contains theuadictionary with all browser strings- Individual module files – Each contains header construction logic
Example customization to force a specific browser:
# Instead of random selection, specify directly
headers = {
"User-Agent": ua["browsers"]["firefox"][0], # First Firefox string
"Accept-Language": "en-US,en;q=0.9",
}
Summary
- User-Agent injection is nearly universal across Holehe modules—any module performing HTTP requests implements this pattern
- Source location:
holehe/localuseragent.pyprovides theuadictionary used by all modules - Primary categories: Social media (20+ modules), forums (30+ modules), shopping (8 modules), and email services (5 modules) represent the largest User-Agent-dependent groups
- Implementation pattern:
random.choice(ua["browsers"][browser_type])injected into request headers - Purpose: Evade bot detection on services checking for browser legitimacy
Frequently Asked Questions
What happens if I modify the User-Agent in a Holehe module?
The target service may respond differently—some block non-standard strings while others accept them. Consistent modifications across all modules in holehe/modules/ maintain uniform behavior, though aggressive rotation can trigger rate limiting.
Which Holehe modules do NOT use User-Agent headers?
Modules relying on API endpoints with explicit authentication or specialized protocols may omit browser headers. However, the vast majority of active email-checking modules in the repository implement the User-Agent pattern described above.
How does Holehe's User-Agent rotation compare to other OSINT tools?
Holehe's centralized ua dictionary approach in localuseragent.py provides more organized rotation than tools hardcoding strings per-module. The categorized browser selection (chrome/firefox/safari/iOS) allows targeted mimicry of specific device types.
Can I add custom User-Agent strings to Holehe?
Yes—extend the ua dictionary in holehe/localuseragent.py with additional browser strings. Ensure new entries match the existing nested structure: ua["browsers"]["your_category"] = ["string1", "string2"].
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →