joermd commited on
Commit
f449a0e
·
verified ·
1 Parent(s): d655bc9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -73
app.py CHANGED
@@ -1,81 +1,54 @@
1
  import gradio as gr
2
  import requests
3
- from urllib.parse import urlparse
4
- from bs4 import BeautifulSoup
5
-
6
 
 
7
  def analyze_website(url):
8
- """
9
- تحليل شامل للموقع.
10
- """
11
- results = {
12
- "أداء الموقع": "",
13
- "تحليل الترافيك": "",
14
- "تحليل الأمان": "",
15
- "تحليل تجربة المستخدم": ""
16
- }
17
-
18
  try:
19
- # 1. تحليل الأداء
20
- response = requests.get(url, timeout=10)
21
- response.raise_for_status()
22
- load_time = response.elapsed.total_seconds()
23
- results["أداء الموقع"] = f"- وقت الاستجابة: {load_time} ثانية.\n" \
24
- f"- حالة الموقع: {response.status_code}\n" \
25
- f"- حجم المحتوى: {len(response.content)} بايت."
26
-
27
- # 2. تحليل الترافيك
28
- parsed_url = urlparse(url)
29
- domain = parsed_url.netloc
30
- alexa_url = f"https://www.alexa.com/siteinfo/{domain}"
31
- results["تحليل الترافيك"] = f"- تحقق من ترتيب أليكسا هنا: {alexa_url}"
32
-
33
- # 3. تحليل الأمان
34
- ssl_labs_url = f"https://www.ssllabs.com/ssltest/analyze.html?d={domain}"
35
- sucuri_url = f"https://sitecheck.sucuri.net/results/{domain}"
36
- results["تحليل الأمان"] = f"- تحقق من شهادة SSL: {ssl_labs_url}\n" \
37
- f"- تحقق من الأمان مع Sucuri: {sucuri_url}"
38
-
39
- # 4. تحليل تجربة المستخدم
40
- soup = BeautifulSoup(response.text, "html.parser")
41
- title = soup.title.string if soup.title else "غير متوفر"
42
- meta_desc = soup.find("meta", attrs={"name": "description"})
43
- description = meta_desc["content"] if meta_desc else "غير متوفرة"
44
- results["تحليل تجربة المستخدم"] = f"- عنوان الصفحة: {title}\n" \
45
- f"- وصف الصفحة: {description}\n" \
46
- f"- عدد الروابط الداخلية: {len(soup.find_all('a'))}"
47
-
48
- except requests.RequestException as e:
49
- error_msg = f"حدث خطأ أثناء الوصول إلى الموقع: {str(e)}"
50
- return {"أداء الموقع": error_msg, "تحليل الترافيك": error_msg,
51
- "تحليل الأمان": error_msg, "تحليل تجربة المستخدم": error_msg}
52
-
53
- return results
54
 
 
 
 
 
 
55
 
56
- # تصميم الواجهة باستخدام Gradio
57
- with gr.Blocks() as app:
58
- gr.Markdown("<h1 style='text-align: center; color: #8B4513;'>محلل المواقع الذكي</h1>")
59
- gr.Markdown("<p style='text-align: center;'>أدخل رابط الموقع لتحليله من حيث الأداء، الأمان، الترافيك، وتجربة المستخدم.</p>")
60
-
61
- with gr.Row():
62
- url_input = gr.Textbox(label="رابط الموقع", placeholder="https://example.com", lines=1)
63
- analyze_button = gr.Button("تحليل الموقع")
64
-
65
- with gr.Row():
66
- performance_output = gr.Textbox(label="أداء الموقع", lines=4, interactive=False)
67
- traffic_output = gr.Textbox(label="تحليل الترافيك", lines=2, interactive=False)
68
-
69
- with gr.Row():
70
- security_output = gr.Textbox(label="تحليل الأمان", lines=3, interactive=False)
71
- ux_output = gr.Textbox(label="تحليل تجربة المستخدم", lines=4, interactive=False)
72
-
73
- analyze_button.click(
74
- analyze_website,
75
- inputs=[url_input],
76
- outputs=[performance_output, traffic_output, security_output, ux_output]
77
- )
78
 
79
- # إطلاق التطبيق
80
- if __name__ == "__main__":
81
- app.launch()
 
1
  import gradio as gr
2
  import requests
 
 
 
3
 
4
+ # Function to analyze the website
5
  def analyze_website(url):
 
 
 
 
 
 
 
 
 
 
6
  try:
7
+ # Ensure the URL has a protocol
8
+ if not url.startswith("http://") and not url.startswith("https://"):
9
+ url = "https://" + url
10
+
11
+ # Website performance analysis
12
+ response = requests.get(url, timeout=5)
13
+ response_time = response.elapsed.total_seconds()
14
+ status_code = response.status_code
15
+ content_size = len(response.content)
16
+ performance = f"- وقت الاستجابة: {response_time:.2f} ثانية.\n- حالة الموقع: {status_code}\n- حجم المحتوى: {content_size} بايت."
17
+
18
+ # Traffic analysis
19
+ traffic_analysis = f"- تحقق من ترتيب أليكسا هنا: https://www.alexa.com/siteinfo/{url.replace('https://', '').replace('http://', '')}"
20
+
21
+ # Security analysis
22
+ security_analysis = (
23
+ f"- تحقق من شهادة SSL: https://www.ssllabs.com/ssltest/analyze.html?d={url}\n"
24
+ f"- تحقق من الأمان مع Sucuri: https://sitecheck.sucuri.net/results/{url}"
25
+ )
26
+
27
+ # User experience analysis
28
+ page_title = response.text.split("<title>")[1].split("</title>")[0] if "<title>" in response.text else "غير متوفر"
29
+ link_count = response.text.count("<a href=")
30
+ page_description = "وصف الصفحة غير متوفر."
31
+ user_experience = f"- عنوان الصفحة: {page_title}\n- وصف الصفحة: {page_description}\n- عدد الروابط الداخلية: {link_count}"
 
 
 
 
 
 
 
 
 
 
32
 
33
+ # Return results in Arabic
34
+ return performance, traffic_analysis, security_analysis, user_experience
35
+ except Exception as e:
36
+ error_message = f"حدث خطأ أثناء تحليل الموقع: {str(e)}"
37
+ return error_message, error_message, error_message, error_message
38
 
39
+ # Gradio interface
40
+ interface = gr.Interface(
41
+ fn=analyze_website, # The function used
42
+ inputs=gr.Textbox(label="Website URL", placeholder="Enter website URL (e.g., example.com)"), # Input field
43
+ outputs=[
44
+ gr.Textbox(label="تحليل الأداء"),
45
+ gr.Textbox(label="تحليل الترافيك"),
46
+ gr.Textbox(label="تحليل الأمان"),
47
+ gr.Textbox(label="تحليل تجربة المستخدم")
48
+ ],
49
+ title="Website Analysis Tool",
50
+ description="أدخل رابط الموقع لتحليل الأداء، الترافيك، الأمان، وتجربة المستخدم."
51
+ )
 
 
 
 
 
 
 
 
 
52
 
53
+ # Launch the app
54
+ interface.launch(share=True)