A comprehensive tool to detect technology stacks used by websites
Project description
OpenIntel
A comprehensive Python package for detecting and analyzing technology stacks used by websites. Perfect for competitive intelligence, lead generation, and market research.
Features
- Comprehensive Detection: Identifies 50+ technologies across multiple categories
- Fast Async Processing: Concurrent analysis of multiple websites
- Detailed Analysis: Confidence scoring and evidence collection
- Trend Analysis: Track technology adoption over time
- CLI Interface: Easy command-line usage
- API Ready: Use as a library in your Python projects
Categories Detected
- Frontend Frameworks (React, Vue.js, Angular)
- JavaScript Libraries (jQuery, Lodash)
- CSS Frameworks (Bootstrap, Tailwind CSS)
- Analytics (Google Analytics, Facebook Pixel)
- CDNs (Cloudflare, Amazon CloudFront)
- CMS (WordPress, Drupal)
- E-commerce (Shopify, WooCommerce)
- Backend Technologies (Apache, Nginx, Express.js)
- And many more...
Installation
pip install openintel
Quick Start
Command Line Usage
# Analyze a single website
openintel example.com
# Analyze multiple websites from file
openintel --file urls.txt --format json --output results.json
# Analyze with custom timeout
openintel example.com --timeout 60
Python API Usage
import asyncio
from openintel import TechStackDetector, TechStackAnalyzer
async def main():
# Basic detection
async with TechStackDetector() as detector:
result = await detector.detect("https://example.com")
print(f"Found {len(result.technologies)} technologies")
for tech in result.technologies:
print(f"- {tech.name} ({tech.confidence:.2f})")
# Advanced analysis
analyzer = TechStackAnalyzer()
analyzer.add_result(result)
# Get technology scoring
scores = analyzer.score_tech_stack(result)
print(f"Overall tech stack score: {scores['overall_score']}/10")
asyncio.run(main())
API Reference
TechStackDetector
Main detection class with async context manager support.
async with TechStackDetector(timeout=30) as detector:
result = await detector.detect(url)
DetectionResult
Contains comprehensive analysis results:
class DetectionResult:
url: str
timestamp: datetime
technologies: List[DetectedTech]
total_score: float
response_time: float
errors: List[str]
raw_data: Dict[str, Any]
TechStackAnalyzer
Advanced analysis and trend tracking:
analyzer = TechStackAnalyzer()
trends = analyzer.get_technology_trends(days=30)
scores = analyzer.score_tech_stack(result)
Detection Methods
The detector uses multiple techniques:
- HTML Pattern Matching: Searches for framework-specific patterns
- JavaScript Analysis: Identifies libraries and frameworks
- HTTP Headers: Analyzes server and security headers
- Meta Tags: Extracts generator and other meta information
- Script Sources: Identifies external libraries and CDNs
- DNS Analysis: Checks for hosting and CDN providers
Example Output
{
"url": "https://example.com",
"timestamp": "2024-01-15T10:30:00",
"technologies": [
{
"name": "React",
"category": "frontend_framework",
"confidence": 0.95,
"version": "18.2.0",
"evidence": ["HTML pattern: _react", "Script: react.min.js"]
},
{
"name": "Cloudflare",
"category": "cdn",
"confidence": 0.98,
"evidence": ["Header server: cloudflare"]
}
],
"total_score": 15.7,
"response_time": 2.34
}
Advanced Features
Batch Processing
urls = ["site1.com", "site2.com", "site3.com"]
async with TechStackDetector() as detector:
tasks = [detector.detect(url) for url in urls]
results = await asyncio.gather(*tasks)
Custom Signatures
Extend detection capabilities by adding custom technology signatures:
from openintel.models import TechSignature, TechCategory
custom_sig = TechSignature(
name="Custom Framework",
category=TechCategory.FRONTEND_FRAMEWORK,
patterns={"html": [r"custom-framework"]},
confidence_score=0.9
)
Trend Analysis
analyzer = TechStackAnalyzer()
for result in results:
analyzer.add_result(result)
trends = analyzer.get_technology_trends(days=30)
print(f"Most popular: {trends['top_technologies'][0]}")
Performance
- Concurrent Processing: Analyze multiple sites simultaneously
- Async Operations: Non-blocking I/O for maximum efficiency
- Intelligent Caching: Reduces redundant requests
- Configurable Timeouts: Prevent hanging requests
Use Cases
- Competitive Intelligence: Analyze competitor tech stacks
- Lead Generation: Identify prospects using specific technologies
- Market Research: Track technology adoption trends
- Security Auditing: Identify outdated or vulnerable technologies
- Sales Intelligence: Tailor pitches based on prospect's tech stack
Contributing
- Fork the repository
- Create a feature branch
- Add tests for new functionality
- Ensure all tests pass
- Submit a pull request
License
MIT License - see LICENSE file for details.
Support
- GitHub Issues: Report bugs and request features
- Documentation: Full API documentation available
- Examples: Check the examples/ directory
Changelog
v1.0.0
- Initial release
- 50+ technology signatures
- Async detection engine
- CLI interface
- Trend analysis capabilities
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openintel-1.0.0.tar.gz.
File metadata
- Download URL: openintel-1.0.0.tar.gz
- Upload date:
- Size: 154.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03cb3196056ffad9b06c67a97205023117a2e10a686d61f15fadd25c845f9716
|
|
| MD5 |
f3aa17f8c294eddb91563d9100e9f79c
|
|
| BLAKE2b-256 |
83145ea618b392febb03630bcd04194a827f47c2954d84476601b72dc157e52b
|
File details
Details for the file openintel-1.0.0-py3-none-any.whl.
File metadata
- Download URL: openintel-1.0.0-py3-none-any.whl
- Upload date:
- Size: 14.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4aa02b6ab40a20cdca04e37efcfd9180c84344f66ae6e756ec90977f9b9a4f1e
|
|
| MD5 |
108729b2adb76a5100b09365b7c1be36
|
|
| BLAKE2b-256 |
e8bf8808a7472404badd50e5512fa82c8a9c22f54d68aca5a06df0d54da19717
|