GeoSight is a Python-based web application designed to help visualize how websites are rendered and resolved in different geolocations. It's particularly useful for testing and verifying DNS-based geolocation strategies, which are often employed for content delivery and regional restrictions.
- Geolocational DNS Resolution: GeoSight can perform DNS lookups from various geographic locations to determine how a domain is resolved in different parts of the world.
- Webpage Screenshot Capture: For each geolocation, GeoSight captures a screenshot of the website as it appears when accessed from that region.
- No Proxy Required and Private URL Handling: GeoSight uniquely operates without the need for proxies or VPNs. Instead, it utilizes public DNS servers corresponding to various geolocations to resolve domain names. This DNS-based approach enables GeoSight to not only resolve publicly accessible URLs but also handle private or non-publically-addressable URLs.
- Easy to Use Interface: A simple web interface where users can input a URL and quickly get visualization results for multiple regions.
To set up GeoSight, you'll need Python installed on your system. The application also depends on Playwright for Python, which is used for browser automation to capture screenshots.
-
Clone the repository and move to the directory:
git clone https://github.com/your-username/GeoSight.git
cd GeoSight
-
Install the dependencies:
pip3 install -r requirements.txt
playwright install
To run GeoSight, execute python3 app.py
in your terminal. Open your web browser and navigate to http://localhost:5001
. Enter a website URL to see how it is resolved and rendered in different geographic locations.
docker build -t geosight .
docker run -p 5001:5001 geosight
GeoSight uses a configuration file (geo_config.py
) to define DNS servers for different geographic locations. You can edit this file to add or modify locations and their corresponding DNS servers.
Contributions to GeoSight are welcome! Whether it's adding new features, fixing bugs, or improving documentation, your help is appreciated.
To contribute:
- Fork the repository.
- Create a new branch (
git checkout -b feature-branch
). - Make your changes and commit them (
git commit -am 'Add a new feature'
). - Push to the branch (
git push origin feature-branch
). - Create a new Pull Request.
GeoSight is open-source software licensed under the MIT License.
Note: GeoSight is a tool for educational and testing purposes. Please use it responsibly and in accordance with website owners' terms of service.