import streamlit as st from googlesearch import search import requests from bs4 import BeautifulSoup # Function to fetch search results def fetch_search_results(query, num_results=5): results = [] try: for url in search(query, num=num_results, stop=num_results, pause=2): results.append(url) except Exception as e: st.error(f"Error fetching search results: {e}") return results # Function to fetch website preview def fetch_website_preview(url): try: response = requests.get(url, timeout=5) soup = BeautifulSoup(response.content, "html.parser") title = soup.title.string if soup.title else "No title" return title, url except Exception as e: return "Error loading website", None # Mask IP address using proxy def secure_request(url, proxy=None): proxies = {"http": proxy, "https": proxy} if proxy else None try: response = requests.get(url, proxies=proxies, timeout=5) return response.status_code, response.content except Exception as e: return None, str(e) # Streamlit app starts here st.title("Secure Chrome Search with IP Masking") st.write("Search the web securely, view results, and mask your IP address.") # User input query = st.text_input("Enter search query:", "") # Search results if query: st.write("Fetching search results...") results = fetch_search_results(query) if results: st.write("Top Results:") for idx, url in enumerate(results): st.markdown(f"{idx+1}. [Visit Site]({url})") # Select website to preview selected_url = st.selectbox("Select a website to preview:", results) if selected_url: st.write("Website Preview:") title, preview_url = fetch_website_preview(selected_url) st.write(f"**Title:** {title}") st.markdown(f"[Visit Site in Browser]({preview_url})") else: st.write("No results found.") # Mask IP section proxy = st.text_input("Enter proxy (e.g., http://:):", "") if proxy: test_url = st.text_input("Enter URL to test secure connection:", "http://httpbin.org/ip") if st.button("Test Secure Connection"): status, response = secure_request(test_url, proxy=proxy) if status: st.success(f"Response Status: {status}") st.write(response.decode("utf-8")) else: st.error(f"Error: {response}")