|  | import requests | 
					
						
						|  | from bs4 import BeautifulSoup | 
					
						
						|  | import streamlit as st | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | def load_css(): | 
					
						
						|  | st.markdown(""" | 
					
						
						|  | <style> | 
					
						
						|  | body { | 
					
						
						|  | font-family: Arial, sans-serif; | 
					
						
						|  | background-color: #f8f9fa; | 
					
						
						|  | } | 
					
						
						|  | .search-bar { | 
					
						
						|  | width: 50%; | 
					
						
						|  | margin: 20px auto; | 
					
						
						|  | display: flex; | 
					
						
						|  | align-items: center; | 
					
						
						|  | border: 1px solid #dfe1e5; | 
					
						
						|  | border-radius: 24px; | 
					
						
						|  | padding: 10px; | 
					
						
						|  | background-color: #fff; | 
					
						
						|  | box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.1); | 
					
						
						|  | } | 
					
						
						|  | .search-bar input { | 
					
						
						|  | flex: 1; | 
					
						
						|  | border: none; | 
					
						
						|  | outline: none; | 
					
						
						|  | font-size: 16px; | 
					
						
						|  | padding: 5px; | 
					
						
						|  | } | 
					
						
						|  | .search-bar button { | 
					
						
						|  | background: none; | 
					
						
						|  | border: none; | 
					
						
						|  | color: #4285f4; | 
					
						
						|  | font-size: 18px; | 
					
						
						|  | cursor: pointer; | 
					
						
						|  | } | 
					
						
						|  | .search-result { | 
					
						
						|  | margin: 20px auto; | 
					
						
						|  | width: 80%; | 
					
						
						|  | padding: 15px; | 
					
						
						|  | border: 1px solid #dfe1e5; | 
					
						
						|  | border-radius: 8px; | 
					
						
						|  | background-color: #fff; | 
					
						
						|  | box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.1); | 
					
						
						|  | } | 
					
						
						|  | .search-result h3 { | 
					
						
						|  | margin: 0; | 
					
						
						|  | color: #1a0dab; | 
					
						
						|  | font-size: 18px; | 
					
						
						|  | } | 
					
						
						|  | .search-result p { | 
					
						
						|  | margin: 5px 0; | 
					
						
						|  | color: #545454; | 
					
						
						|  | font-size: 14px; | 
					
						
						|  | } | 
					
						
						|  | .captcha-warning { | 
					
						
						|  | text-align: center; | 
					
						
						|  | margin-top: 50px; | 
					
						
						|  | } | 
					
						
						|  | .captcha-warning h3 { | 
					
						
						|  | color: #d93025; | 
					
						
						|  | } | 
					
						
						|  | </style> | 
					
						
						|  | """, unsafe_allow_html=True) | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | def search_google(query, proxy=None): | 
					
						
						|  | headers = { | 
					
						
						|  | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' | 
					
						
						|  | } | 
					
						
						|  | url = f'https://www.google.com/search?q={query.replace(" ", "+")}&hl=en' | 
					
						
						|  | proxies = {"http": proxy, "https": proxy} if proxy else None | 
					
						
						|  | response = requests.get(url, headers=headers, proxies=proxies, timeout=10) | 
					
						
						|  | if "detected unusual traffic" in response.text.lower(): | 
					
						
						|  | return None, True | 
					
						
						|  | return response.text, False | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | def parse_search_results(html_content): | 
					
						
						|  | soup = BeautifulSoup(html_content, 'html.parser') | 
					
						
						|  | results = [] | 
					
						
						|  | for g in soup.find_all('div', class_='tF2Cxc'): | 
					
						
						|  | title = g.find('h3').text if g.find('h3') else "No title" | 
					
						
						|  | link = g.find('a')['href'] if g.find('a') else "No link" | 
					
						
						|  | snippet = g.find('span', class_='aCOpRe').text if g.find('span', class_='aCOpRe') else "No snippet" | 
					
						
						|  | results.append({'title': title, 'link': link, 'snippet': snippet}) | 
					
						
						|  | return results | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | def main(): | 
					
						
						|  | st.set_page_config(page_title="Google Search Clone", layout="centered") | 
					
						
						|  | load_css() | 
					
						
						|  |  | 
					
						
						|  | st.markdown('<div class="search-bar">', unsafe_allow_html=True) | 
					
						
						|  | query = st.text_input("Enter your search query:", label_visibility="collapsed") | 
					
						
						|  | search_button = st.button("Search") | 
					
						
						|  | st.markdown('</div>', unsafe_allow_html=True) | 
					
						
						|  |  | 
					
						
						|  | if search_button and query.strip(): | 
					
						
						|  | with st.spinner("Searching..."): | 
					
						
						|  | html_content, captcha_detected = search_google(query) | 
					
						
						|  |  | 
					
						
						|  | if captcha_detected: | 
					
						
						|  | st.markdown(""" | 
					
						
						|  | <div class="captcha-warning"> | 
					
						
						|  | <h3>CAPTCHA Detected</h3> | 
					
						
						|  | <p>Google has detected unusual traffic from this application. Please solve the CAPTCHA manually or try again later.</p> | 
					
						
						|  | </div> | 
					
						
						|  | """, unsafe_allow_html=True) | 
					
						
						|  | return | 
					
						
						|  |  | 
					
						
						|  | if html_content: | 
					
						
						|  | search_results = parse_search_results(html_content) | 
					
						
						|  | for result in search_results: | 
					
						
						|  | st.markdown(f""" | 
					
						
						|  | <div class="search-result"> | 
					
						
						|  | <h3><a href="{result['link']}" target="_blank">{result['title']}</a></h3> | 
					
						
						|  | <p>{result['snippet']}</p> | 
					
						
						|  | </div> | 
					
						
						|  | """, unsafe_allow_html=True) | 
					
						
						|  |  | 
					
						
						|  | if __name__ == "__main__": | 
					
						
						|  | main() |