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
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
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 python tool auto change proxy or ip after dealy time set by user

Auto proxy Ghost This tool auto change proxy or ip after dealy time set by user how to run 1. Install required file ./requirements.sh 2.Enter command

Harsh Tagra 0 Feb 23, 2022
TicTacToe using Socket Server

TicTacToe using Socket Server This is a project for the class : 18CSC302J - Computer Networks by Dr. S.Babu Contributors Suvodeep Sinha RA191100301010

Suvodeep Sinha 12 Nov 30, 2022
pyWhisker is a Python equivalent of the original Whisker made by Elad Shamir and written in C#.

PyWhisker pyWhisker is a Python equivalent of the original Whisker made by Elad Shamir and written in C#. This tool allows users to manipulate the msD

Shutdown 325 Jan 08, 2023
NetMiaou is an crossplatform hacking tool that can do reverse shells, send files, create an http server or send and receive tcp packet

NetMiaou is an crossplatform hacking tool that can do reverse shells, send files, create an http server or send and receive tcp packet

TRIKKSS 5 Oct 05, 2022
This Tool can help enginners and biggener in network, the tool help you to find of any ip with subnet mask that can calucate them and show you ( Availble IP's , Subnet Mask, Network-ID, Broadcast-ID )

This Tool can help enginners and biggener in network, the tool help you to find of any ip with subnet mask that can calucate them and show you ( Availble IP's , Subnet Mask, Network-ID, Broadcast-ID

12 Dec 13, 2022
Simple Port Scanner With Socket Module In Python 3x

PortScanner Simple Port Scanner With Socket Module In Python 3x How To Install Requirements Of This Port Scanner sudo apt install python3;sudo apt ins

1 Nov 23, 2021
sync application configuration and settings across multiple multiplatform devices

sync application configuration and settings across multiple multiplatform devices ✨ Key Features • ⚗️ Installation • 📑 How To Use • 🤔 FAQ • 🛠️ Setu

Souvik 6 Aug 25, 2022
Build surface water network for MODFLOW's SFR Package

Surface water network Creates surface water network, which can be used to create MODFLOW's SFR. Python packages Python 3.6+ is required. Required geop

Mike Taves 20 Nov 22, 2022
Ip-Seeker - See Details With Public Ip && Find Web Ip Addresses

IP SEEKER See Details With Public Ip && Find Web Ip Addresses Tool By Heshan

M.D.Heshan Sankalpa 1 Jan 02, 2022
jarbou3 is rat tool coded in python with C&C which can accept multiple connections from clients

jarbou3 Jarbou3 is rat tool with coded in python with C&C which can accept multi

youhacker55 108 Dec 29, 2022
Wifi-Jamming is a simple, yet highly effective method of causing a DoS on a wireless implemented using python pyqt5.

pyqt5-linux-wifi-jamming-tool Linux-Wifi-Jamming is a simple GUI tool, yet highly effective method of causing a DoS on a wireless implemented using py

lafesa 8 Dec 05, 2022
EV: IDS Evasion via Packet Manipulation

EV: IDS Evasion via TCP/IP Packet Manipulation 中文文档 Introduction EV is a tool that allows you crafting TCP packets and leveraging some well-known TCP/

256 Dec 08, 2022
Port Traffic/Bandwidth Monitor Script

python-switch-port-traffic-alarm Port Traffic/Bandwidth Monitor Script That's an Switch Port Traffic monitor program is checking the switch uplink por

goksinenki 4 Sep 02, 2021
CORS Bypass Proxy Cloud Function

CORS Bypass Proxy Cloud Function

Elayamani K 1 Oct 23, 2021
BlueHawk is an HTTP/1.1 compliant web server developed in python

This project is done as a part of Computer Networks course. It aims at the implementation of the HTTP/1.1 Protocol based on RFC 2616 and includes the basic HTTP methods of GET, POST, PUT, DELETE and

2 Nov 11, 2022
Python Scripts for Cisco Identity Services Engine (ISE)

A set of Python scripts to configure a freshly installed Cisco Identity Services Engine (ISE) for simple operation; in my case, a basic Cisco Software-Defined Access environment.

Roddie Hasan 9 Jul 19, 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