import streamlit as st import requests from bs4 import BeautifulSoup import pandas as pd import plotly.express as px import whois import ssl import socket import urllib3 from datetime import datetime import numpy as np from urllib.parse import urlparse import plotly.graph_objects as go import time import psutil import requests_html from selenium import webdriver from selenium.webdriver.chrome.options import Options from googleapiclient.discovery import build import semrush_api import speedtest import dns.resolver import tld from fake_useragent import UserAgent import aiohttp import asyncio # تهيئة الصفحة st.set_page_config(page_title="محلل المواقع الشامل", layout="wide", initial_sidebar_state="expanded") # تصميم CSS محسن st.markdown(""" """, unsafe_allow_html=True) # العنوان الرئيسي st.title("🌐 محلل المواقع الشامل والمتقدم") st.markdown("---") # إدخال رابط الموقع url = st.text_input("أدخل رابط الموقع للتحليل", "https://example.com") # API Keys (في الواقع يجب وضعها في متغيرات بيئية) GOOGLE_API_KEY = "YOUR_GOOGLE_API_KEY" SEMRUSH_API_KEY = "YOUR_SEMRUSH_API_KEY" async def get_website_traffic(domain): """تقدير حركة المرور للموقع باستخدام SemRush API""" try: # هذه مجرد محاكاة - في الواقع ستستخدم API حقيقي monthly_visits = np.random.randint(10000, 1000000) bounce_rate = np.random.uniform(30, 70) avg_visit_duration = np.random.uniform(60, 300) return { "monthly_visits": monthly_visits, "bounce_rate": bounce_rate, "avg_visit_duration": avg_visit_duration } except Exception as e: return None async def check_google_ranking(domain): """فحص ترتيب الموقع في جوجل""" try: # محاكاة نتائج الترتيب - في الواقع ستستخدم Google Search Console API keywords = ["keyword1", "keyword2", "keyword3"] rankings = {k: np.random.randint(1, 100) for k in keywords} return rankings except Exception as e: return None async def analyze_website_speed(url): """تحليل سرعة الموقع""" try: start_time = time.time() async with aiohttp.ClientSession() as session: async with session.get(url) as response: end_time = time.time() load_time = end_time - start_time return { "load_time": load_time, "performance_score": min(100, int(100 * (1 / (1 + load_time)))) } except Exception as e: return None async def get_website_size(url): """حساب حجم الموقع""" try: async with aiohttp.ClientSession() as session: async with session.get(url) as response: content = await response.read() size_bytes = len(content) size_mb = size_bytes / (1024 * 1024) return size_mb except Exception as e: return None def estimate_website_cost(traffic_data, speed_data, security_info): """تقدير التكلفة التقريبية للموقع""" base_cost = 1000 # تكلفة أساسية # زيادة التكلفة بناءً على حركة المرور traffic_cost = (traffic_data['monthly_visits'] / 10000) * 100 # زيادة التكلفة بناءً على الأداء performance_cost = speed_data['performance_score'] * 5 # زيادة التكلفة بناءً على الأمان security_cost = 500 if security_info['secure'] else 0 total_cost = base_cost + traffic_cost + performance_cost + security_cost return round(total_cost, 2) if st.button("تحليل الموقع"): try: with st.spinner('جاري تحليل الموقع...'): # تحليل الأمان security_info = analyze_security(url) # تحليل SEO response = requests.get(url, verify=False) soup = BeautifulSoup(response.text, 'html.parser') seo_info = analyze_seo(soup, url) # تحليل حركة المرور والسرعة والحجم domain = urlparse(url).netloc traffic_data = await get_website_traffic(domain) speed_data = await analyze_website_speed(url) website_size = await get_website_size(url) rankings = await check_google_ranking(domain) # تقدير التكلفة estimated_cost = estimate_website_cost(traffic_data, speed_data, security_info) # عرض النتائج في أقسام col1, col2, col3 = st.columns(3) with col1: st.markdown("