https://github.com/ivan-sincek/nagooglesearch
Not another Google searching tool.
https://github.com/ivan-sincek/nagooglesearch
bug-bounty ethical-hacking google google-dorking google-dorks google-hack google-hacking google-search-scraper offensive-security penetration-testing python red-team-engagement requests search-engine security threat-hunting threat-intelligence web-penetration-testing
Last synced: 2 months ago
JSON representation
Not another Google searching tool.
- Host: GitHub
- URL: https://github.com/ivan-sincek/nagooglesearch
- Owner: ivan-sincek
- License: mit
- Created: 2022-10-27T14:43:01.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-03-22T11:26:58.000Z (about 1 year ago)
- Last Synced: 2025-03-28T21:01:29.847Z (about 1 year ago)
- Topics: bug-bounty, ethical-hacking, google, google-dorking, google-dorks, google-hack, google-hacking, google-search-scraper, offensive-security, penetration-testing, python, red-team-engagement, requests, search-engine, security, threat-hunting, threat-intelligence, web-penetration-testing
- Language: Python
- Homepage:
- Size: 9.77 KB
- Stars: 8
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Not Another Google Search
Not another Google searching library. Just kidding - it is.
Made for educational purposes. I hope it will help!
## Table of Contents
* [How to Install](#how-to-install)
* [Standard Install](#standard-install)
* [Build and Install From the Source](#build-and-install-from-the-source)
* [Usage](#usage)
* [Standard](#standard)
* [Shortest Possible](#shortest-possible)
* [Time Sensitive Search](#time-sensitive-search)
* [User Agents](#user-agents)
## How to Install
### Standard Install
```bash
pip3 install nagooglesearch
pip3 install --upgrade nagooglesearch
```
### Build and Install From the Source
```bash
git clone https://github.com/ivan-sincek/nagooglesearch && cd nagooglesearch
python3 -m pip install --upgrade build
python3 -m build
python3 -m pip install dist/nagooglesearch-8.7-py3-none-any.whl
```
## Usage
### Standard
Default values:
```python
nagooglesearch.GoogleClient(
tld = "com",
homepage_parameters = {
"btnK": "Google+Search",
"source": "hp"
},
search_parameters = {
},
cookies = {
},
user_agent = "",
proxy = "",
max_results = 100,
min_sleep = 8,
max_sleep = 18,
debug = False
)
```
**Only domains without they keyword `google` and not ending with the keyword `goo.gl` are accepted as valid results. The final output is a unique and sorted list of URLs.**
**Google frequently changes cookies, so default ones might not work; specify new ones using the `cookies` parameter.**
Default cookies can be found [here](https://github.com/ivan-sincek/nagooglesearch/blob/main/src/nagooglesearch/nagooglesearch.py#L169).
Example, standard:
```python
import nagooglesearch
# the following query string parameters are set only if 'start' query string parameter is not set or is equal to zero
# simulate a homepage search
homepage_parameters = {
"btnK": "Google+Search",
"source": "hp"
}
# search the internet for additional query string parameters
# https://brightdata.com/blog/web-data/google-search-url-parameters
search_parameters = {
"q": "site:*.example.com intext:password", # search query
"tbs": "li:1", # specify 'li:1' for verbatim search (no alternate spellings, etc.)
"hl": "en",
"lr": "lang_en",
"cr": "countryUS",
"udm": "14", # only web results
"filter": "0", # specify '0' to display hidden results
"safe": "images" # specify 'images' to turn off safe search, or specify 'active' to turn on safe search
}
# if the default cookies no longer work, specify new ones here
# if left empty, the default ones will be used
cookies = {
}
client = nagooglesearch.GoogleClient(
tld = "com", # top level domain, e.g., www.google.com or www.google.hr
homepage_parameters = homepage_parameters, # 'search_parameters' will override 'homepage_parameters'
search_parameters = search_parameters,
cookies = cookies,
user_agent = "curl/3.30.1", # a random user agent will be set if none is provided
proxy = "socks5://127.0.0.1:9050", # supported URL schemes are 'http[s]', 'socks4[h]', and 'socks5[h]'
max_results = 200, # maximum unique URLs to return
min_sleep = 15, # minimum sleep between page requests
max_sleep = 30, # maximum sleep between page requests
debug = True # enable debug output
)
urls = client.search()
if client.get_error() == nagooglesearch.Error.REQUEST:
print("[ Request Exception ]")
# do something
elif client.get_error() == nagooglesearch.Error.RATE_LIMIT:
print("[ HTTP 429 Too Many Requests ]")
# do something
for url in urls:
print(url)
# do something
```
Check the list of user agents [here](https://github.com/ivan-sincek/bot-safe-agents/blob/main/src/bot_safe_agents/user_agents.txt). For more user agents, check [scrapeops.io](https://scrapeops.io).
### Shortest Possible
Example, shortest possible:
```python
import nagooglesearch
urls = nagooglesearch.GoogleClient(search_parameters = {"q": "site:*.example.com intext:password"}).search()
# do something
```
### Time Sensitive Search
Example, do not show results older than 6 months:
```python
import nagooglesearch, dateutil.relativedelta as relativedelta
def get_tbs(months: int):
today = datetime.datetime.today()
return nagooglesearch.get_tbs(today, today - relativedelta.relativedelta(months = months))
search_parameters = {
"tbs": get_tbs(6)
}
# do something
```
### User Agents
Example, get all user agents:
```python
import nagooglesearch
user_agents = nagooglesearch.get_all_user_agents()
print(user_agents)
# do something
```
Example, get a random user agent:
```python
import nagooglesearch
user_agent = nagooglesearch.get_random_user_agent()
print(user_agent)
# do something
```