Get Your Localhost Online - Ngrok Alternative

Related tags

Networkingjprq
Overview

JPRQ - Ngrok Alternative

IMPORTANT: JPRQ is temporarily disabled due to usage for phishing.

Get Your Localhost Online and HTTPS

jprq demo

How JPRQ is different from Ngrok?

  • JPRQ is a free and open-source Ngrok alternative to expose local servers online easily.
  • It allows developers to serve unlimited requests to the local server compared to Ngrok's 40 requests/minute limit.
  • It can expose multiple ports at the same time compared to Ngrok with 1 port limit.

How to install

$ pip install jprq

How to use

Replace 8000 with the port you want to expose

$ jprq 8000

Press Ctrl+C to stop it

[NEW] Custom Subdomain

Replace subdomain with a subdomain you want

$ jprq 8000 -s=subdomain

How to uninstall

$ pip uninstall jprq

How JPRQ Works


JPRQ's Server-side implementation in Golang:

https://github.com/azimjohn/jprq.io

Limitations

  • Cannot expose WebSocket
  • Doesn't work with HTTP Polling

Troubleshooting

  • With serving React, Vue or any other modern web apps, make sure you run production server or build the app and serve static files as JPRQ is not capable of exposing Websocket.
Comments
  • How to Install on Windows?

    How to Install on Windows?

    Hey, yesterday I found this project and I wanted to install this on my computer which is Windows 10, but can't and was getting build errors, even when I install Visual C++ tools? Can anyone tell me how to install this on Windows? This is what I got as an error->

      ERROR: Command errored out with exit status 1:
       command: 'e:\python_important\python.exe' 'e:\python_important\lib\site-packages\pip\_vendor\pep517\_in_process.py' build_wheel 'C:\Users\HP\AppData\Local\Temp\tmpodhipo3z'
           cwd: C:\Users\HP\AppData\Local\Temp\pip-install-l7lksmk7\multidict_419d5fdeacfd40ab9f1244168d03a4b2
      Complete output (40 lines):
      **********************
      * Accellerated build *
      **********************
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build\lib.win-amd64-3.9
      creating build\lib.win-amd64-3.9\multidict
      copying multidict\_abc.py -> build\lib.win-amd64-3.9\multidict
      copying multidict\_compat.py -> build\lib.win-amd64-3.9\multidict
      copying multidict\_multidict_base.py -> build\lib.win-amd64-3.9\multidict
      copying multidict\_multidict_py.py -> build\lib.win-amd64-3.9\multidict
      copying multidict\__init__.py -> build\lib.win-amd64-3.9\multidict
      running egg_info
      writing multidict.egg-info\PKG-INFO
      writing dependency_links to multidict.egg-info\dependency_links.txt
      writing top-level names to multidict.egg-info\top_level.txt
      reading manifest file 'multidict.egg-info\SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no previously-included files matching '*.pyc' found anywhere in distribution
      warning: no previously-included files found matching 'multidict\_multidict.html'
      warning: no previously-included files found matching 'multidict\*.so'
      warning: no previously-included files found matching 'multidict\*.pyd'
      warning: no previously-included files found matching 'multidict\*.pyd'
      no previously-included directories found matching 'docs\_build'
      writing manifest file 'multidict.egg-info\SOURCES.txt'
      copying multidict\__init__.pyi -> build\lib.win-amd64-3.9\multidict
      copying multidict\_multidict.c -> build\lib.win-amd64-3.9\multidict
      copying multidict\py.typed -> build\lib.win-amd64-3.9\multidict
      creating build\lib.win-amd64-3.9\multidict\_multilib
      copying multidict\_multilib\defs.h -> build\lib.win-amd64-3.9\multidict\_multilib
      copying multidict\_multilib\dict.h -> build\lib.win-amd64-3.9\multidict\_multilib
      copying multidict\_multilib\istr.h -> build\lib.win-amd64-3.9\multidict\_multilib
      copying multidict\_multilib\iter.h -> build\lib.win-amd64-3.9\multidict\_multilib
      copying multidict\_multilib\pair_list.h -> build\lib.win-amd64-3.9\multidict\_multilib
      copying multidict\_multilib\views.h -> build\lib.win-amd64-3.9\multidict\_multilib
      running build_ext
      building 'multidict._multidict' extension
      error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
      ----------------------------------------
      ERROR: Failed building wheel for multidict
    Failed to build multidict
    ERROR: Could not build wheels for multidict which use PEP 517 and cannot be installed directly
    
    opened by Krrishdhaneja 10
  • Error showing when trying to connect to jprq!

    Error showing when trying to connect to jprq!

    When I try to run jprq http tunnel command following error is generated:

    raise InvalidStatusCode(status_code) websockets.exceptions.InvalidStatusCode: server rejected WebSocket connection: HTTP 403

    Seems like certificate is expired can you please check this?

    Thanks, Paras

    opened by parasarora15 8
  • Self host server

    Self host server

    Hi there,

    I'm currently having a look at your solution. Seems to be a great alternative to localtunnel or ngrok.

    I'm missing any info/steps how to actually deploy self hosted service?

    I do have a devops skills, I'd like to run it later on as a docker container (can share files with you), but first I need to understand how to deploy and use it as self hosted solution.

    Thank you!

    opened by rsurgiewicz 5
  • Binaries don’t support subdomain

    Binaries don’t support subdomain

    How tu use subdomain with binaries ?

    I tried this:

    [email protected]:~ $ ./jprq-linux-arm Usage: jprq Supported Protocols: [tcp, http] Optional Argument: -subdomain Client Version: 1.0.0

    [email protected]:~ $ ./jprq-linux-arm http 4736 -subdomain toto Tunnel Status: Online Forwarded: pi.jprq.io → 127.0.0.1:4736

    [email protected]:~ $ ./jprq-linux-arm http 4736 -subdomain=toto Tunnel Status: Online Forwarded: pi.jprq.io → 127.0.0.1:4736

    Thank you and Happy New Year

    opened by YannBouyeron 4
  • Throwing 504 Gateway Time-out when hosted from cloud provider (gcp)

    Throwing 504 Gateway Time-out when hosted from cloud provider (gcp)

    I tried locally. It works like a charm. Thanks for this. But if i deploy on cloud instance it throws error 504 Gateway Time-out and on console below error:

    [email protected]:~$ jprq 3333
    Online at https://user-1.jprq.live/
    Error Processing Request At: /
    Error Processing Request At: /
    

    I understand jprq is to get localhost online but just trying to understand why this error when hosted from gcp instance. I have 80 tcp port whitelisted and running as root as well. Can you please help ?

    opened by VinayKadalagi 4
  • Deceptive Site

    Deceptive Site

    Google has identified jprq.io as a deceptive site and it doesn't open in major browsers.

    And DNS stopped working for jprq.io too, so it won't be able to accept webhook requests either. I have submitted it for a review in the google search console, it will take a few days to get back online.

    I am trying to find ways how others to cope with this issue, found about Public Suffix Domains list. I will submit jprq.io to it as soon as DNS block gets lifted.

    Screen Shot 2021-03-31 at 17 57 26
    opened by azimjohn 4
  • Not an issue more like discussion!

    Not an issue more like discussion!

    How are you hosting jprq.io? What I mean to say is details of jprq.io hosting provider.

    P.S. I know it's the question to put in jprq.io but I don't understand golang fully so asking here.

    opened by 0x44454c 4
  • SSL certificate expired error while trying to start TCP tunnelling.

    SSL certificate expired error while trying to start TCP tunnelling.

    I was trying start TCP tunnel that work totally fine yesterday but today I tried again and I got this error. Please help me. Sorry for my bad English.

    opened by StrOrx12 3
  • Error Connecting to jprq

    Error Connecting to jprq

    Hello,

    The certificate seems to be expired so jprq is giving error when trying to connect to it. websockets.exceptions.InvalidStatusCode: server rejected WebSocket connection: HTTP 502 Can you please look into it.

    Appreciate your help.

    opened by parasarora15 3
  • Error in connecting to jprq

    Error in connecting to jprq

    getting this error when trying to run JPRQ can you please look into it: websockets.exceptions.InvalidStatusCode: server rejected WebSocket connection: HTTP 502

    opened by parasarora15 3
  • error

    error

    nohup: ignoring input Online at https://conpedrinha.jprq.live/ POST /slack/documentos 200 POST /slack/documento_assinado 200 POST /slack/documento_assinado 200 POST /slack/documento_assinado 200 POST /slack/documento_assinado 200 Traceback (most recent call last): File "/home/ubuntu/.local/lib/python3.8/site-packages/websockets/protocol.py", line 827, in transfer_data message = await self.read_message() File "/home/ubuntu/.local/lib/python3.8/site-packages/websockets/protocol.py", line 895, in read_message frame = await self.read_data_frame(max_size=self.max_size) File "/home/ubuntu/.local/lib/python3.8/site-packages/websockets/protocol.py", line 971, in read_data_frame frame = await self.read_frame(max_size) File "/home/ubuntu/.local/lib/python3.8/site-packages/websockets/protocol.py", line 1047, in read_frame frame = await Frame.read( File "/home/ubuntu/.local/lib/python3.8/site-packages/websockets/framing.py", line 105, in read data = await reader(2) File "/usr/lib/python3.8/asyncio/streams.py", line 723, in readexactly await self._wait_for_data('readexactly') File "/usr/lib/python3.8/asyncio/streams.py", line 517, in _wait_for_data await self._waiter asyncio.exceptions.CancelledError

    The above exception was the direct cause of the following exception:

    Traceback (most recent call last): File "/home/ubuntu/.local/bin/jprq", line 8, in sys.exit(main()) File "/home/ubuntu/.local/lib/python3.8/site-packages/jprq/main.py", line 29, in main loop.run_until_complete( File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete return future.result() File "/home/ubuntu/.local/lib/python3.8/site-packages/jprq/tunnel.py", line 22, in open_tunnel message = json.loads(await websocket.recv()) File "/home/ubuntu/.local/lib/python3.8/site-packages/websockets/protocol.py", line 509, in recv await self.ensure_open() File "/home/ubuntu/.local/lib/python3.8/site-packages/websockets/protocol.py", line 812, in ensure_open raise self.connection_closed_exc() websockets.exceptions.ConnectionClosedError: code = 1006 (connection closed abnormally [internal]), no reason

    Online at https://conpecone.jprq.live/ POST /slack/disponibilidade 200 POST /slack/actions 200 POST /slack/actions 200 POST /slack/actions 200 POST /slack/actions 200 POST /slack/actions 200 POST /slack/actions 200 POST /slack/actions 200 POST /slack/actions 200 POST /slack/actions 200 POST /slack/actions 200 POST /slack/actions 200 POST /slack/actions 200 POST /slack/actions 200 POST /slack/actions 200 Traceback (most recent call last): File "/home/ubuntu/.local/lib/python3.8/site-packages/websockets/protocol.py", line 827, in transfer_data message = await self.read_message() File "/home/ubuntu/.local/lib/python3.8/site-packages/websockets/protocol.py", line 895, in read_message frame = await self.read_data_frame(max_size=self.max_size) File "/home/ubuntu/.local/lib/python3.8/site-packages/websockets/protocol.py", line 971, in read_data_frame frame = await self.read_frame(max_size) File "/home/ubuntu/.local/lib/python3.8/site-packages/websockets/protocol.py", line 1047, in read_frame frame = await Frame.read( File "/home/ubuntu/.local/lib/python3.8/site-packages/websockets/framing.py", line 105, in read data = await reader(2) File "/usr/lib/python3.8/asyncio/streams.py", line 723, in readexactly await self._wait_for_data('readexactly') File "/usr/lib/python3.8/asyncio/streams.py", line 517, in _wait_for_data await self._waiter asyncio.exceptions.CancelledError

    The above exception was the direct cause of the following exception:

    Traceback (most recent call last): File "/home/ubuntu/.local/bin/jprq", line 8, in sys.exit(main()) File "/home/ubuntu/.local/lib/python3.8/site-packages/jprq/main.py", line 29, in main loop.run_until_complete( File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete return future.result() File "/home/ubuntu/.local/lib/python3.8/site-packages/jprq/tunnel.py", line 22, in open_tunnel message = json.loads(await websocket.recv()) File "/home/ubuntu/.local/lib/python3.8/site-packages/websockets/protocol.py", line 509, in recv await self.ensure_open() File "/home/ubuntu/.local/lib/python3.8/site-packages/websockets/protocol.py", line 812, in ensure_open raise self.connection_closed_exc() websockets.exceptions.ConnectionClosedError: code = 1006 (connection closed abnormally [internal]), no reason

    opened by JonasCardoso 3
  • when will JPRQ be up again

    when will JPRQ be up again

    thank you for the phenomenal effort in releasing this amazing library - right now, jprq http 8000 gives the error:

    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
    socket.gaierror: [Errno 8] nodename nor servname provided, or not known
    

    when do you think JPRQ will be operational again?

    thank you

    opened by 99snowleopards 3
  • TCP tunnel is created but connection is not establishing.

    TCP tunnel is created but connection is not establishing.

    Error is like while making connection

    TimeoutError: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

    My tcp config for nginx is like

    server { server_name tcp.example.com; location = /favicon.ico { access_log off; log_not_found off; } location /_ws/ { include proxy_params; proxy_pass http://localhost:4500; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";

    proxy_connect_timeout       600;
    proxy_send_timeout          600;
    proxy_read_timeout          600;
    send_timeout                600;
    

    } location / { include proxy_params; proxy_pass http://localhost:4500; } listen 443 ssl; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; }

    server { server_name tcp.example.com; location = /favicon.ico { access_log off; log_not_found off; } location /_ws/ { include proxy_params; proxy_pass http://localhost:4500; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";

    proxy_connect_timeout       600;
    proxy_send_timeout          600;
    proxy_read_timeout          600;
    send_timeout                600;
    

    } location / { include proxy_params; proxy_pass http://localhost:4500; } listen 80; }

    opened by nilpatel9099sn 0
  • SSL certificate verify failed: certificate has expired

    SSL certificate verify failed: certificate has expired

    File "jprq\tunnel_tcp.py", line 22, in open_tcp_tunnel File "websockets\legacy\client.py", line 633, in aenter File "websockets\legacy\client.py", line 650, in await_impl_timeout File "asyncio\tasks.py", line 483, in wait_for File "websockets\legacy\client.py", line 654, in await_impl File "asyncio\base_events.py", line 1050, in create_connection File "asyncio\base_events.py", line 1080, in _create_connection_transport File "asyncio\sslproto.py", line 529, in data_received File "asyncio\sslproto.py", line 189, in feed_ssldata File "ssl.py", line 944, in do_handshake ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1123)

    opened by DaryeDev 6
  • InvalidStatusCode(status_code) websockets.exceptions.InvalidStatusCode: server rejected WebSocket connection: HTTP 502

    InvalidStatusCode(status_code) websockets.exceptions.InvalidStatusCode: server rejected WebSocket connection: HTTP 502

    I used this lib a while ago, simply perfect, went to use today and started having this problem. What happened?

    jprq.version '2.1.0'

    Traceback (most recent call last): File "C:\ProgramData\Anaconda3\lib\runpy.py", line 197, in _run_module_as_main return _run_code(code, main_globals, None, File "C:\ProgramData\Anaconda3\lib\runpy.py", line 87, in run_code exec(code, run_globals) File "C:\ProgramData\Anaconda3\lib\site-packages\jprq_main.py", line 5, in main() File "C:\ProgramData\Anaconda3\lib\site-packages\click\core.py", line 1128, in call return self.main(*args, **kwargs) File "C:\ProgramData\Anaconda3\lib\site-packages\click\core.py", line 1053, in main rv = self.invoke(ctx) File "C:\ProgramData\Anaconda3\lib\site-packages\click\core.py", line 1659, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "C:\ProgramData\Anaconda3\lib\site-packages\click\core.py", line 1395, in invoke return ctx.invoke(self.callback, **ctx.params) File "C:\ProgramData\Anaconda3\lib\site-packages\click\core.py", line 754, in invoke return __callback(*args, **kwargs) File "C:\ProgramData\Anaconda3\lib\site-packages\jprq\main.py", line 42, in http loop.run_until_complete( File "C:\ProgramData\Anaconda3\lib\asyncio\base_events.py", line 642, in run_until_complete return future.result() File "C:\ProgramData\Anaconda3\lib\site-packages\jprq\tunnel_http.py", line 16, in open_http_tunnel async with websockets.connect(ws_uri, ssl=ssl_context) as websocket: File "C:\Users\bueno\AppData\Roaming\Python\Python39\site-packages\websockets\legacy\client.py", line 604, in aenter return await self File "C:\Users\bueno\AppData\Roaming\Python\Python39\site-packages\websockets\legacy\client.py", line 629, in await_impl await protocol.handshake( File "C:\Users\bueno\AppData\Roaming\Python\Python39\site-packages\websockets\legacy\client.py", line 388, in handshake raise InvalidStatusCode(status_code) websockets.exceptions.InvalidStatusCode: server rejected WebSocket connection: HTTP 502

    opened by buenohernandez 5
  • Icecast stream loads indefinitely with HTTP

    Icecast stream loads indefinitely with HTTP

    When exposing Icecast through jprq, the stream loads indefinitely unless TCP is used instead of HTTP. Example: https://example.jprq.io/radio.mp3 loads indefinitely http://tcp.jprq.io:65535/radio.mp3 works as expected

    opened by jschenke488 1
Releases(1.1.0)
Owner
Azimjon Pulatov
Azimjon Pulatov
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
Take a list of domains and probe for working HTTP and HTTPS servers

httprobe Take a list of domains and probe for working http and https servers. Install ▶ go get -u github.com/tomnomnom/httprobe Basic Usage httprobe

Tom Hudson 2.3k Dec 28, 2022
A python shell / chat bot for XMPP and cloud services

XMPP_Shell_Bot A python shell / chat bot for XMPP and cloud services, designed for penetration testers to bypass network filters. To better understand

Abdulkareem Aldeek 1 Jan 09, 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
Utility for converting IP Fabric webhooks into a Teams format.

IP Fabric Webhook Integration for Microsoft Teams and/or Slack Setup IP Fabric Setup Go to Settings Webhooks Add webhook Provide a name URL will b

Community Fabric 1 Jan 26, 2022
The OUCH Project - OUCH Server/Client

This software simulates OUCH Server/Client communication through a script which initialises a central server and another script which simulates clients connecting to the server.

Jahin Z. 2 Dec 10, 2022
SonicWall SSL-VPN Exploit

VisualDoor SonicWall SSL-VPN Exploit, as used by Phineas Fisher to hack Cayman Trust Bank and Hacking Team.

169 Nov 15, 2022
Domain To Api [ PYTHON ]

Domain To IP Usage You Open Terminal For Run The Program python ip.py Input & Output Input Your List e.g domain.txt Output ( For Save Output File )

It's Me Jafar 0 Dec 12, 2021
Qobuz-rpc - A simple discord rich presence client for qobuz written in Python

qobuz-rpc A simple discord rich presence client for qobuz written in Python It's

Raphael O. 13 Dec 15, 2022
ExtDNS synchronizes labeled records in docker-compose with DNS providers.

ExtDNS for docker-compose ExtDNS synchronizes labeled records in docker-compose with DNS providers. Inspired by External DNS, ExtDNS makes resources d

DNTSK 6 Dec 24, 2022
DataShare - Simple library for data sharing between scripts and public functions calling

DataShare - Simple library for data sharing between scripts and public functions calling. Installation. Install code, Delete LICENSE, README, readme.t

Ivan Perzhinsky. 1 Dec 17, 2021
An ansible playbook to set up wireguard server.

Poor man's VPN (pay for only what you need) An ansible playbook to quickly set up Wireguard server for occasional personal use. It takes around five m

Amrit Bera 613 Dec 25, 2022
Python code that get the name and ip address of a computer/laptop

IP Address This is a python code that provides the name and the internet protocol address of the computer. You need to install socket pip install sock

CODE 2 Feb 21, 2022
EUserv - A Python script which can help you renew your free EUserv IPv6 VPS

English | 简体中文 This project comes from https://github.com/a-beam-of-light/eu_ex

阿两 0 Jan 06, 2022
A Scapy implementation of SMS-SUBMIT and (U)SIM Application Toolkit command packets.

A Scapy implementation of SMS-SUBMIT and (U)SIM Application Toolkit command packets.

mnemonic 83 Dec 11, 2022
Cobalt Strike script for ScareCrow payloads

🎃 🌽 ScareCrow Cobalt Strike intergration CNA A Cobalt Strike script for ScareCrow payload generation. Works only with the binary and DLL Loader. 💣

UserX 401 Dec 11, 2022
A Python framework for interacting with Solana's Pyth network.

Pyth Network A basic Python framework for reading and decoding data regarding the Pyth network

1 Nov 29, 2021
Enrich IP addresses with metadata and security IoC

Stratosphere IP enrich Get an IP address and enrich it with metadata and IoC You need API keys for VirusTotal and PassiveTotal (RiskIQ) How to use fro

Stratosphere IPS 10 Sep 25, 2022
Rufus is a Dos tool written in Python3.

🦎 Rufus 🦎 Rufus is a simple but powerful Denial of Service tool written in Python3. The type of the Dos attack is TCP Flood, the power of the attack

Billy 88 Dec 20, 2022
ServerStatus with node management and monitor

ServerStatus with node management and monitor

lidalao 162 Jan 01, 2023