|
import streamlit as st |
|
from googlesearch import search |
|
import requests |
|
from bs4 import BeautifulSoup |
|
|
|
|
|
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 |
|
|
|
|
|
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 |
|
|
|
|
|
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) |
|
|
|
|
|
st.title("Secure Chrome Search with IP Masking") |
|
st.write("Search the web securely, view results, and mask your IP address.") |
|
|
|
|
|
query = st.text_input("Enter search query:", "") |
|
|
|
|
|
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})") |
|
|
|
|
|
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.") |
|
|
|
|
|
proxy = st.text_input("Enter proxy (e.g., http://<proxy-ip>:<port>):", "") |
|
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}") |