A Python library to utilize AWS API Gateway's large IP pool as a proxy to generate pseudo-infinite IPs for web scraping and brute forcing.

Overview

requests-ip-rotator

A Python library to utilize AWS API Gateway's large IP pool as a proxy to generate pseudo-infinite IPs for web scraping and brute forcing.

This library will allow the user to bypass IP-based rate-limits for sites and services.


Installation

This package is on pypi so you can install via any of the following:

  • pip3 install requests-ip-rotator
  • python3 -m pip install requests-ip-rotator

 

Simple Usage

import requests
from requests_ip_rotator import ApiGateway

# Create gateway object and initialise in AWS
gateway = ApiGateway("https://site.com")
gateway.start()

# Assign gateway to session
session = requests.Session()
session.mount("https://site.com", gateway)

# Send request (IP will be randomised)
response = session.get("https://site.com/index.html")
print(response.status_code)

# Delete gateways
gateway.shutdown()

Please remember that if gateways are not shutdown via the shutdown() method, you may be charged in future.

 

Costs

API Gateway is free for the first million requests per region, which means that for most use cases this should be completely free.
At the time of writing, AWS charges ~$3 per million requests after the free tier has been exceeded.
 

Documentation

AWS Authentication

It is recommended to setup authentication via environment variables. With awscli, you can run aws configure to do this, or alternatively, you can simply set the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY variables yourself.

You can find your access key ID and secret by following the official AWS tutorial.

 

Creating ApiGateway object

The ApiGateway class can be created with the following optional parameters:

Name Description Required Default
site The site (without path) requests will be sent to. True
regions An array of AWS regions to setup gateways in. False ip_rotator.DEFAULT_REGIONS
access_key_id AWS Access Key ID (will override env variables). False Relies on env variables.
access_key_secret AWS Access Key Secret (will override env variables). False Relies on env variables.
from ip_rotator import ApiGateway, EXTRA_REGIONS, ALL_REGIONS

# Gateway to outbound HTTP IP and port for only two regions
gateway_1 = ApiGateway("http://1.1.1.1:8080", regions=["eu-west-1", "eu-west-2"])

# Gateway to HTTPS google for the extra regions pack, with specified access key pair
gateway_2 = ApiGateway("https://www.google.com", regions=EXTRA_REGIONS, access_key_id="ID", access_key_secret="SECRET")

 

Starting API gateway

An ApiGateway object must then be started using the start method.
By default, if an ApiGateway already exists for the site, it will use the existing endpoint instead of creating a new one.
This does not require any parameters, but accepts the following:

Name Description Required
force Create a new set of endpoints, even if some already exist. False
endpoints Array of pre-existing endpoints (i.e. from previous session). False
# Starts new ApiGateway instances for site, or locates existing endpoints if they already exist.
gateway_1.start()

# Starts new ApiGateway instances even if some already exist.
gateway_2.start(force=True)

 

Sending requests

Requests are sent by attaching the ApiGateway object to a requests Session object.
The site given in mount must match the site passed in the ApiGateway constructor.

If you pass in a X-My-X-Forwarded-For header, this will get sent as X-Forwarded-For in the outbound request.

import requests

# Posts a request to the site created in gateway_1. Will be sent from a random IP.
session_1 = requests.Session()
session_1.mount("http://1.1.1.1:8080", gateway_1)
session_1.post("http://1.1.1.1:8080/update.php", headers={"Hello": "World"})

# Send 127.0.0.1 as X-Forwarded-For header in outbound request.
session_1.post("http://1.1.1.1:8080/update.php", headers={"X-My-X-Forwarded-For", "127.0.0.1"})

# Execute Google search query from random IP
session_2 = requests.Session()
session_2.mount("https://www.google.com", gateway_2)
session_2.get("https://www.google.com/search?q=test")

 

Closing ApiGateway Resources

It's important to shutdown the ApiGateway resources once you have finished with them, to prevent dangling public endpoints that can cause excess charges to your account.
This is done through the shutdown method of the ApiGateway object. It will close all resources for the regions specified in the ApiGateway object constructor.

# This will shutdown all gateway proxies for "http://1.1.1.1:8080" in "eu-west-1" & "eu-west-2"
gateway_1.shutdown()

# This will shutdown all gatewy proxies for "https://www.google.com" for all regions in ip_rotator.EXTRA_REGIONS
gateway_2.shutdown()

Credit

The core gateway creation and organisation code was adapter from RhinoSecurityLabs' IPRotate Burp Extension.
The X-My-X-Forwarded-For header forwarding concept was originally conceptualised by ustayready in his fireprox proxy.

Comments
  • send() not printing out to console

    send() not printing out to console

    Hello,

    I was tinkering around with send(self, request, ...) in ip_rotator.py and noticed that print statements in the method will not show up. But, print statements in the module's other methods like start() will show in console.

    I assume send(self, request, ...) is being used under the hood? If this is the case, how come the print statements don't show up? Is there any other way way to view details about the request parameter?

    Thanks

    question 
    opened by harhur 15
  • Removed creatation of usage plans as they are not required and were n…

    Removed creatation of usage plans as they are not required and were n…

    There are 3 main changes in this PR. Perhaps I should have separated them out...

    1. Removed creation of usage plan. Isn't required for functioning are we aren't cleaning up. 300 limit on usage policy

    2. added modify_request_dict which allows passing in a dict that defines a request to be modified for use with the API Gateway. This change allowed me to easily implement an async scraper.

    3. Project was previously ignoring query string paramaters in request if path was empty. Params are now explicitly extracted and appended to params to request object.

    opened by harryslimes 9
  • Recurring 403 error

    Recurring 403 error

    Just discovered this package and it has huge promise, however I'm not sure if something on AWS has changed since the last release.

    Using the below code i always get a 403 response.

    import requests
    from requests_ip_rotator import ApiGateway
    
    gateway = ApiGateway(
        "https://www.google.com",
        regions=['eu-west-1', 'eu-west-2', 'eu-west-3'],
        access_key_id="MY_KEY",
        access_key_secret="MY_SECRET"
        )
    gateway.start()
    
    session = requests.Session()
    session.mount("https://www.google.com", gateway)
    response = session.get("https://www.google.com/search?q=random+search")
    print(response.status_code)
    
    question 
    opened by cia05rf 6
  • TooManyRedirects: Exceeded 30 redirects.

    TooManyRedirects: Exceeded 30 redirects.

    import requests
    from requests_ip_rotator import ApiGateway, EXTRA_REGIONS
    
    gateway = ApiGateway("https://spare.avspart.com/", access_key_id = 'my key', access_key_secret = 'my secret key')
    gateway.start()
    
    session = requests.Session()
    session.mount("https://spare.avspart.com/", gateway)
    
    response = session.get("https://spare.avspart.com/catalog/case/64848/4534337/677993/")
    print(response.status_code)
    
    gateway.shutdown()
    

    When I try and send a request to the page I get this error. Not sure what's happening?

    Starting API gateways in 10 regions.
    Using 10 endpoints with name 'https://spare.avspart.com/ - IP Rotate API' (10 new).
    Traceback (most recent call last):
      File "test.py", line 16, in <module>
        response = session.get("https://spare.avspart.com/catalog/case/64848/4534337/677993/")
      File "/mnt/c/Users/hewin/Downloads/Asyncio/.venv/lib/python3.8/site-packages/requests/sessions.py", line 555, in get
        return self.request('GET', url, **kwargs)
      File "/mnt/c/Users/hewin/Downloads/Asyncio/.venv/lib/python3.8/site-packages/requests/sessions.py", line 542, in request
        resp = self.send(prep, **send_kwargs)
      File "/mnt/c/Users/hewin/Downloads/Asyncio/.venv/lib/python3.8/site-packages/requests/sessions.py", line 677, in send
        history = [resp for resp in gen]
      File "/mnt/c/Users/hewin/Downloads/Asyncio/.venv/lib/python3.8/site-packages/requests/sessions.py", line 677, in <listcomp>
        history = [resp for resp in gen]
      File "/mnt/c/Users/hewin/Downloads/Asyncio/.venv/lib/python3.8/site-packages/requests/sessions.py", line 166, in resolve_redirects
        raise TooManyRedirects('Exceeded {} redirects.'.format(self.max_redirects), response=resp)
    requests.exceptions.TooManyRedirects: Exceeded 30 redirects.
    
    opened by DLHTurboDieselLtd 6
  • 403: forbidden

    403: forbidden

    I am experiencing a strange situation:

    • when making requests here: https://www.zillow.com/homes/Miami.dash.Dade-County,-FL_rb/ everything goes correctly
    • when i try to make a request here instead : https://www.zillow.com/homedetails/14851-SW-150th-St-Miami-FL-33196/44327576_zpid/ I get this: {"message":"Forbidden"}

    I know it has to be something related to headers because if i dont use any header I always get 403, but even using headers in the second link i cant get a 200 response. I dont know if something like this has happened to any of you. If someone knows the issue i would appreciate a lot if they let me know. Thank you!

    question 
    opened by jherrerogb98 5
  • Batch opening and closing gateways?

    Batch opening and closing gateways?

    Hello sir, very nice module :)

    I am trying to make it nicer by speeding up closing and opening of gateways. Current implementation uses:

    apis = awsclient.get_rest_apis()["items"] // to get the ids to close and, lists max 20 awsclient.delete_rest_api(restApiId=api["id"]) // to actually close it

    Which works fine, unless you have to close 600 gateways which easily takes half an hour and you have to recursively call get_rest_apis(), because it lists only 20

    The same problem happens with opening gateways. Opening gateways for 10 domains takes around 30s. I am attaching the relevant code from the project:

        `# Create simple rest API resource
        create_api_response = awsclient.create_rest_api(
            name=self.api_name,
            endpointConfiguration={
                "types": [
                    "REGIONAL",
                ]
            }
        )
    
        # Get ID for new resource
        get_resource_response = awsclient.get_resources(
            restApiId=create_api_response["id"]
        )
        rest_api_id = create_api_response["id"]
    
        # Create "Resource" (wildcard proxy path)
        create_resource_response = awsclient.create_resource(
            restApiId=create_api_response["id"],
            parentId=get_resource_response["items"][0]["id"],
            pathPart="{proxy+}"
        )
    
        # Allow all methods to new resource
        awsclient.put_method(
            restApiId=create_api_response["id"],
            resourceId=get_resource_response["items"][0]["id"],
            httpMethod="ANY",
            authorizationType="NONE",
            requestParameters={
                "method.request.path.proxy": True,
                "method.request.header.X-My-X-Forwarded-For": True
            }
        )
    
        # Make new resource route traffic to new host
        awsclient.put_integration(
            restApiId=create_api_response["id"],
            resourceId=get_resource_response["items"][0]["id"],
            type="HTTP_PROXY",
            httpMethod="ANY",
            integrationHttpMethod="ANY",
            uri=self.site,
            connectionType="INTERNET",
            requestParameters={
                "integration.request.path.proxy": "method.request.path.proxy",
                "integration.request.header.X-Forwarded-For": "method.request.header.X-My-X-Forwarded-For"
            }
        )
    
        awsclient.put_method(
            restApiId=create_api_response["id"],
            resourceId=create_resource_response["id"],
            httpMethod="ANY",
            authorizationType="NONE",
            requestParameters={
                "method.request.path.proxy": True,
                "method.request.header.X-My-X-Forwarded-For": True
            }
        )
    
        awsclient.put_integration(
            restApiId=create_api_response["id"],
            resourceId=create_resource_response["id"],
            type="HTTP_PROXY",
            httpMethod="ANY",
            integrationHttpMethod="ANY",
            uri=f"{self.site}/{{proxy}}",
            connectionType="INTERNET",
            requestParameters={
                "integration.request.path.proxy": "method.request.path.proxy",
                "integration.request.header.X-Forwarded-For": "method.request.header.X-My-X-Forwarded-For"
            }
        )
    
        # Creates deployment resource, so that our API to be callable
        awsclient.create_deployment(
            restApiId=rest_api_id,
            stageName="ProxyStage"
        )
    
        # Return endpoint name and whether it show it is newly created
        return {
            "success": True,
            "endpoint": f"{rest_api_id}.execute-api.{region}.amazonaws.com",
            "new": True
        }`
    

    Is it possible to perform opening and closing tasks in batch?

    question 
    opened by mittster 5
  • URL Encoding Not as Expected

    URL Encoding Not as Expected

    I have been attempting to use this package to scrape Google News - I am using the most recent release (v1.0.10), and have configured the AWS-CLI. The exact code sequence resulting in a failure is as follows:

    1. Get blocked by Google :) (run this, and you'll likely be blocked after 750 to 1000 requests)
    import requests
    for i in range(1,10000):
        response = requests.get("http://www.google.com/search?q=barry+bonds after:2021-12-22 before: 2021-12-23&tbm=nws&hl=en&num=10")
        if response.status_code != 200:
            print(i)
            print(response.status_code)
            break
    
    1. After getting blocked on my IP, I should still be able to access google using the module (i.e. after running the above block, I should be able to run the below block, and get a 200 response).
    with ApiGateway("https://google.com") as g:
        session = requests.Session()
        session.mount("https://google.com", g)
        response = session.get("http://www.google.com/search?q=elon+musk after:2021-12-22 before:    2021-12-23&tbm=nws&hl=en&num=10")
        print(response.status_code)
    

    Unfortunately, the result is a 429 response for me ... on the other hand, when I tried using a proxy from scrapingbee.com after initially getting blocked by Google (performing step 1), I actually did get a 200 response. I configured the AWS CLI, and I also tried inputting the keys as arguments and creating new users with the API Gateway enabled, as well as using the root key, but have had no luck.

    Screen Shot 2021-12-24 at 5 26 40 PM

    Are you able to replicate this issue/first artificially block yourself from Google, and then being unable to scrape using this ip-rotator module? Thank you very much for an excellent module, and Merry Christmas and happy holidays!

    bug 
    opened by hariravi 5
  • how to check if its working

    how to check if its working

    hi, im running the request ip rotator in a while infinite loop. But i dont know if its really working, is it sending requests with different ip, how can i check that? im asking because i see in the terminal "IP Rotate API' (0 new)"

    "Starting API gateways in 17 regions. Using 17 endpoints with name 'https://www.google.com - IP Rotate API' (0 new). running #3 - Status code: 200 - Host: 2000qnx4dm5b6.execute-api.us-east-1.amazonaws.com - Request headers X-My-X-Forwarded-For: XX.XXX.XXX.XX"

    why do i see 0 new?

    question 
    opened by AlexWayne20 5
  • How I can bypass cloudflare?

    How I can bypass cloudflare?

    The site has Cloudflare protection to bypass it as I know I need to spoof tls fingerprint. How I can change tls fingerprint with code or in aws? Or mb there is another method to bypass it?

    opened by MsLolita 4
  • Add pagination to gateway getting

    Add pagination to gateway getting

    When there are many gateways on an account / region and the relevant ones aren't on the first page (25 per page) they start to accumulate since they may not be found to be deleted.

    bug 
    opened by RobertLucey 4
  • Unable to download video

    Unable to download video

    If you try to view a video, the response has status code 500 with message {"message": "Internal server error"}

    You can try it out with this sample:

    if __name__ == '__main__':
        gateway = ApiGateway("https://video.xx.fbcdn.net", regions=["regionhere"], access_key_id=ACCESS_KEY_ID, access_key_secret=ACCESS_KEY_SECRET)
        gateway.start()
    
        session = requests.Session()
        session.mount("https://video.xx.fbcdn.net", gateway)
    
        response = session.get("https://video.xx.fbcdn.net/v/t66.36240-2/10000000_5162062970516874_3952172667405771162_n.mp4?_nc_cat=110&_nc_ht=video.fmnl8-2.fna&_nc_ohc=RuGOgev5TvEAX8FI4Hk&_nc_sid=985c63&ccb=1-7&efg=eyJybHIiOjIzNzQsInJsYSI6MTc5MSwidmVuY29kZV90YWciOiJvZXBfaGQifQ%3D%3D&oe=628E6A4A&oh=00_AT__3AG9wy4Vz9QqimNjwzLTspBsfs0E5-VyVRaLCqGAUw&rl=2374&vabr=1583")
        print(response.status_code) // this prints 500
    
        # Delete gateways
        gateway.shutdown()
    

    Also tried with: -https://previews.customer.envatousercontent.com/h264-video-previews/34bc5a70-9db3-4ee9-821d-b4304d0c5dc5/33244341.mp4

    Any idea whats going on? It seems that default aws gateway configuration does not support video.

    bug 
    opened by mittster 3
  • API Gateway Converting

    API Gateway Converting "%2f" to "/" in URL Parameter

    Hello @Ge0rg3! Thank you for putting together this library. It was proven to be effective over months of use.

    However I'd like to report that some urls fail to fetch due to, at least I think so, how API Gateway is constructed. Take a look at this url for example:

    https://scontent.xx.fbcdn.net/v/t39.25447-2/315991144_6377206065657734_5025935354679506890_n.mp4?_nc_cat=106&vs=e0ece699e5d69073&_nc_vs=HBksFQAYJEdHaWsxUktHOXpQX0NLZ1dBTXEzdjVlVHRiOUZibWRqQUFBRhUAAsgBABUAGCRHTlI1MVJKU3ZyWjZlYmtFQUM5WExHZ25HS0F6YnJGcUFBQUYVAgLIAQBLB4gScHJvZ3Jlc3NpdmVfcmVjaXBlATENc3Vic2FtcGxlX2ZwcwAQdm1hZl9lbmFibGVfbnN1YgAgbWVhc3VyZV9vcmlnaW5hbF9yZXNvbHV0aW9uX3NzaW0AKGNvbXB1dGVfc3NpbV9vbmx5X2F0X29yaWdpbmFsX3Jlc29sdXRpb24AHXVzZV9sYW5jem9zX2Zvcl92cW1fdXBzY2FsaW5nABFkaXNhYmxlX3Bvc3RfcHZxcwAVACUAHAAAJtLalcytxbYCFQIoAkMzGAt2dHNfcHJldmlldxwXQDQaXjU%2FfO4YIGRhc2hfdjRfNXNlY2dvcF9ocTFfZnJhZ18yX3ZpZGVvEgAYGHZpZGVvcy52dHMuY2FsbGJhY2sucHJvZDgSVklERU9fVklFV19SRVFVRVNUGwqIFW9lbV90YXJnZXRfZW5jb2RlX3RhZwZvZXBfaGQTb2VtX3JlcXVlc3RfdGltZV9tcwEwDG9lbV9jZmdfcnVsZQd1bm11dGVkE29lbV9yb2lfcmVhY2hfY291bnQGMTA5NTIxEW9lbV9pc19leHBlcmltZW50AAxvZW1fdmlkZW9faWQPNDcwODM4MDA1MTIwMzYxEm9lbV92aWRlb19hc3NldF9pZBAxMDk3NTM2MDE3NjIxNjU2FW9lbV92aWRlb19yZXNvdXJjZV9pZA82ODI4ODg3Mzk4NjIxODUcb2VtX3NvdXJjZV92aWRlb19lbmNvZGluZ19pZA81MTk4NzQyODMzNjkyNTEOdnRzX3JlcXVlc3RfaWQAJQIcACWOAhsIiAFzAzYzOAJjZAoyMDIyLTExLTE4A3JjYgYxMDk1MDADYXBwDFBvd2VyIEVkaXRvcgJjdBlDT05UQUlORURfUE9TVF9BVFRBQ0hNRU5UE29yaWdpbmFsX2R1cmF0aW9uX3MJMjAuMTM4NjY3AWYCYWQCdHMVcHJvZ3Jlc3NpdmVfZW5jb2RpbmdzAA%3D%3D&ccb=1-7&_nc_sid=4ea082&efg=eyJ2ZW5jb2RlX3RhZyI6Im9lcF9oZCJ9&_nc_ohc=Cfpbu-XsZBsAX87uM0c&_nc_ht=scontent.fltn3-2.fna&oh=00_AfAJY6nikmbiUBPnm8G-_aKrghM7WeryZX3b0Sk4zrarZw&oe=63A51240&_nc_rid=089394793026750

    You can copy paste this url to browser and it plays as it should. However if you make a request via API Gateway, you will get URL signature mismatch error. That is the error you get from fbcdn when the url is malformed. This is a video, so you will also need to send a Range header.

    url = "URL above"
    headers["Range"] = f"bytes=0-9999999"
     with current_session.get(url, stream=True, headers=headers, allow_redirects=False) as response:
            with open(location["absolute_output_file"], 'wb') as f:
                for chunk in response.iter_content(chunk_size=8192):
                    f.write(chunk)
    

    I tried escaping % by replacing them with %25, but it didn't work. Passing URL(url) as request url also didn't work. I uploaded a media file on a server and used a name with %, if fetched normally so I am not sure what is the cause for a problem here. If the url is expired when you see this, I'll supply a new one. Thanks for your help.

    bug help wanted 
    opened by mittster 3
  • Does API Gateway charge for 4XX/5XX errors?

    Does API Gateway charge for 4XX/5XX errors?

    Hi All -

    Great project!

    Just started testing this repo but it looks like CloudWatch stats are delayed.

    I'm wondering if anyone knows whether the API Gateway charges for failed (4XX/5XX) requests?

    I believe it does, but just want to be sure.

    Thanks!

    opened by codemonies 0
  • REST vs HTTP Api

    REST vs HTTP Api

    Hey there, thanks a lot for this great lib! I noticed that it uses the REST api. Would it theoretically be possibe to use the HTTP Api, which is only 1/3 the price?

    enhancement 
    opened by simplexx 14
  • aiohttp-ip-rotator

    aiohttp-ip-rotator

    Hey, I am back again:) I was happily parsing last few days away, blew past the free tier already, but I wanted to scale up my operation further to make it even faster. I am limited with max 60 workers in the pool, so I decided to rewrite it from multiprocessing to asynchronous concurrency. This is where I realized that I can't use Requests module, but your module was made to work only with Requests.

    How difficult would it be to rewrite it to make it compatible with aiohttp? Is there any way to make it work with requests, even thou the module is inherently blocking at the sockets level? The higher latency, the more beneficial would it be to move this work from multiprocessing to asynchronous loop. I could try to work on it, but I am new to python so I appreciate any kind of feedback or advice you can give me.

    I just found Dask and am looking into it, if it could help me keep using Requests. Another possibility is to rent a server that has enough virtual cores to go beyond 60 workers.

    enhancement help wanted 
    opened by vincenthawke 9
Releases(v1.0.14)
  • v1.0.14(Oct 27, 2022)

    What's Changed

    • Add Option to Require Manual Deletion by @Ge0rg3 in https://github.com/Ge0rg3/requests-ip-rotator/pull/47
    • Document New Features by @Ge0rg3 in https://github.com/Ge0rg3/requests-ip-rotator/pull/48

    Full Changelog: https://github.com/Ge0rg3/requests-ip-rotator/compare/v1.0.12...v1.0.14

    Source code(tar.gz)
    Source code(zip)
  • v1.0.12(Jul 26, 2022)

    What's Changed

    • Allow silent runs to reduce noise
    • Add pagination to gateway getting by @RobertLucey in https://github.com/Ge0rg3/requests-ip-rotator/pull/32
    • Do not fail on name checking unnamed gateways by @RobertLucey in https://github.com/Ge0rg3/requests-ip-rotator/pull/33

    New Contributors

    • @RobertLucey made their first contribution in https://github.com/Ge0rg3/requests-ip-rotator/pull/32

    Full Changelog: https://github.com/Ge0rg3/requests-ip-rotator/compare/v1.0.11...v1.0.12

    Source code(tar.gz)
    Source code(zip)
  • v1.0.11(Mar 8, 2022)

  • v1.0.10(Oct 11, 2021)

    Few PRs moved into this:

    • Can now handle with block
    • Automatically randomize X-Forwarded-For header
    • No longer creates usage plans
    • Updated README with better process explanation

    Will be creating a separate project to address #6 in the coming month, that will depend on this project for creating AWS resources. Its too big a jump to transform this into a truly async project on its own, as requests does not handle it well.

    Source code(tar.gz)
    Source code(zip)
    requests-ip-rotator-main.zip(21.40 KB)
Tool to transfer credential files from Firefox to your local machine to decrypt offline.

Firefox-Dumper Firefox Dumper identifies the current user's Firefox profile directory and exfiltrates the credential files to the attacker's FTP serve

Joe Helle 22 Sep 10, 2022
ServerStatus with node management and monitor

ServerStatus with node management and monitor

lidalao 162 Jan 01, 2023
Qtas(Quite a Storage)is an experimental distributed storage system developed by Q-team in BJFU Advanced Computer Network sources.

Qtas(Quite a Storage)is a experimental distributed storage system developed by Q-team in BJFU Advanced Computer Network sources.

Jiaming Zhang 3 Jan 12, 2022
A gRPC-Web implementation for Python

Sonora Sonora is a Python-first implementation of gRPC-Web built on top of standard Python APIs like WSGI and ASGI for easy integration. Why? Regular

Alex Stapleton 216 Dec 30, 2022
E4GL3OS1NT - Simple Information Gathering Tool

E4GL30S1NT Features userrecon - username reconnaissance facedumper - dump facebook information mailfinder - find email with specific name godorker - d

C0MPL3XDEV 195 Dec 21, 2022
Free,Cross-platform,Single-file mass network protocol server simulator

FaPro Free,Cross-platform,Single-file mass network protocol server simulator 中文Readme Description FaPro is a Fake Protocol Server tool, Can easily sta

FOFA Pro 1.4k Jan 06, 2023
Quickly fetch your WiFi password and if needed, generate a QR code of your WiFi to allow phones to easily connect

wifi-password Quickly fetch your WiFi password and if needed, generate a QR code of your WiFi to allow phones to easily connect. Works on macOS and Li

Siddharth Dushantha 2.6k Jan 05, 2023
ip2domain - get ip to domain, Know the domian corresponding to the local network connection IP

What is Sometimes, we need to know what connections our local machine has, and what are their IP, domain name, program and parameters? get ip to domai

51pwn 4 Sep 30, 2022
An open source bias lighting program which syncs up colored lights to the contents of your screen.

About Firelight Firelight is an open source bias lighting program which syncs up colored lights to the contents of your screen or TV, providing an imm

Roshan 18 Dec 18, 2022
Compare the contents of your hosted and proxy repositories for coordinate collisions

Nexus Repository Manager dependency/namespace confusion checker This repository contains a script to check if you have artifacts containing the same n

Sonatype Community 59 Mar 31, 2022
Publish GPU miner info to MQTT

Miner2MQTT Доступ к вашему GPU майнеру через MQTT. Изменения 1.0 EXE файл для Windows 1.1 Управление вентиляторами видеокарт (Linux) Упраление power l

Dmitry Bukhvalov 5 Aug 21, 2022
A simple tool to get information about IP

IP Info Tool Just a simple tool to get IP's information, it uses requests module to gather information about IP, if you dont have much knowledge about

0 Dec 01, 2021
A simple DHCP server and client simulation with python

About The Project This is a simple DHCP server and client simulation. I implemented it for computer network course spring 2021 The client can request

shakiba 3 Feb 08, 2022
RollerScanner — Fast Port Scanner Written On Python

RollerScanner RollerScanner — Fast Port Scanner Written On Python Installation You should clone this repository using: git clone https://github.com/Ma

68 Nov 09, 2022
A tool which is capable of scanning ports as TCP & UDP and detecting open and closed ones.

PortScanner Scan All Open Ports Of The Target IP. A tool which is capable of scanning ports as TCP & UDP and detecting open and closed ones. Clone fro

Msf Nmt 17 Nov 26, 2022
A simple GitHub Action that physically puts your senses on alert when your build/release fails

GH Release Paniker A simple GitHub Action that physically puts your senses on alert when your build/release fails Usage Requirements: Raspberry Pi, LE

Hemanth Krishna 5 Dec 20, 2021
Arp Spoofer using Python 3.

ARP Spoofer / Wifi Killer By Auax Run: Run the application with the following command: python3 spoof.py -t target_ip_address -lh host_ip_address I

Auax 6 Sep 15, 2022
These scripts send notifications to a Webex space when a new IP is banned by Expressway, and allow to request more info or change the ban status

Spam Call and Toll Fraud Mitigation Cisco Expressway release X14 is able to mitigate spam calls and toll fraud attempts by jailing the spam IP address

Luca Pellegrini 6 Aug 05, 2022
Aiotor - a pool of proxies, shifting on each request

Aiotor - a pool of proxies, shifting on each request

Leon 32 Dec 26, 2022
Decentra Network is an open source blockchain that combines speed, security and decentralization.

Decentra Network is an open source blockchain that combines speed, security and decentralization. Decentra Network has very high speeds, scalability, asymptotic security and complete decentralization

Decentra Network 74 Nov 22, 2022