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)
Slowloris is basically an HTTP Denial of Service attack that affects threaded servers.

slowrise-ddos-tool What is Slowloris? Slowloris is basically an HTTP Denial of S

DEMON cat 4 Jun 19, 2022
Linkedin Connection Automation

Why spend an hour+ a week, connecting with the correct people on LinkedIn when you can go for lunch and let your computer do the hard work?

1 Nov 29, 2021
Dnspython is a DNS toolkit for Python.

dnspython is a DNS toolkit for Python. It supports almost all record types. It can be used for queries, zone transfers, and dynamic updates. It supports TSIG authenticated messages and EDNS0.

Bob Halley 2.1k Jan 06, 2023
GNS3 Graphical Network Simulator

GNS3-gui GNS3 GUI repository.

GNS3 1.7k Dec 29, 2022
Script and library to wait for a DNS authority server to get its configuration.

DNSWait dnswait is a small script to wait for the "propagation" of a namserver configuration. Installing It's as easy as: python -m pip install dnswai

Julien Palard 14 Jan 17, 2022
snappi-trex is a snappi plugin that allows executing scripts written using snappi with Cisco's TRex Traffic Generator

snappi-trex snappi-trex is a snappi plugin that allows executing scripts written using snappi with Cisco's TRex Traffic Generator Design snappi-trex c

Open Traffic Generator 14 Sep 07, 2022
Mass querying whois records using whois tool

Mass querying whois records using whois tool

Mohamed Elbadry 24 Nov 10, 2022
Way find out if DNS is down or your instance

DNS-PING Way to find out if DNS is down or your instance Problem: At times it happens that DNS provider services of a website URL is down and so to re

Giten Mitra 4 Nov 18, 2022
This is simple script that changes the config register of a cisco router over serial so that you can reset the password

Cisco-router-config-bypass-tool- This is simple script that changes the config register of a cisco router over serial so that you can bypass the confi

James 1 Jan 02, 2022
Pywbem - A WBEM client and related utilities, written in pure Python.

Pywbem - A WBEM client and related utilities, written in pure Python Overview Pywbem is a WBEM client and WBEM indication listener and provides relate

PyWBEM Projects 39 Dec 22, 2022
A Network tool kit for scanning active IP addresses and open ports

Network scanner A small project that I wrote on the fly for (IT351) Computer Networks University Course to identify and label the devices in my networ

Mohamed Abdelrahman 10 Nov 07, 2022
A Python tool used to automate the execution of the following tools : Nmap , Nikto and Dirsearch but also to automate the report generation during a Web Penetration Testing

📡 WebMap A Python tool used to automate the execution of the following tools : Nmap , Nikto and Dirsearch but also to automate the report generation

Iliass Alami Qammouri 274 Jan 01, 2023
Simple local RPG turn-based to play while learn something using the anki system

Simple local RPG turn-based to play while learn something using the anki system

Raphael Kieling 5 Aug 02, 2022
API Server for VoIP analysis (CDR + Audio CODECs)

Swagger generated server Overview This server was generated by the swagger-codegen project. By using the OpenAPI-Spec from a remote server, you can ea

Noor Muhammad Malik 1 Jan 11, 2022
Simulate Attacks With Mininet And Hping3

Miniattack Simulate Attacks With Mininet And Hping3 It measures network load with bwm-ng when the net is under attack and plots the result. This demo

Geraked 3 Oct 03, 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
Building a Robust IOT device which is customizable, encrypted, secure and user friendly

Building a Robust IOT device which is customizable, encrypted, secure and user friendly, which uses a single GPIO pin to extract multiple sensor values

1 Jan 03, 2022
Tiny JSON RPC via HTTP library.

jrpc Simplest ever possible Asynchronous JSON RPC via HTTP library for Python, backed by httpx. Installation pip install async-jrpc Usage Import JRPC

Onigiri Team 2 Jan 31, 2022
NetworkX is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.

NetworkX is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.

NetworkX 12k Jan 02, 2023
A light-weight open-source project CLI utility for showing services running on ports in a host

Portable Port Scanner (ppscanner) Portable Port Scanner (ppscanner) is a light-weight open-source CLI utility that leverages on nmap to make quick and

1 Oct 30, 2021