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
This will generate a very basic DHCP config with use of PHPIPAM systems.

phpipam-dhcp-config-generator This will generate a very basic DHCP config with use of PHPIPAM systems. Requirements PHPIPAM Custom Fields domain_name

1 Oct 24, 2021
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
Netwalk is a Python library to discover, parse, analyze and change Cisco switched networks

Netwalk is a Python library born out of a large remadiation project aimed at making network device discovery and management as fast and painless as possible.

38 Nov 07, 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
A Python Tor template on Gitpod

A Python Tor template on Gitpod This is template configured for ephemeral development environments on Gitpod. prebuild Get Started With Your Own Proje

Ivan Yastrebov 1 Dec 17, 2021
CSP-style concurrency for Python

aiochan Aiochan is a library written to bring the wonderful idiom of CSP-style concurrency to python. The implementation is based on the battle-tested

Ziyang Hu 127 Dec 23, 2022
9SPY: a Windows RAT built in Python using sockets

9SPY 👁‍🗨 9SPY is a Windows RAT built in Python using sockets Features Features will be listed here soon, there are currenly 14 Information This is a

doop 12 Dec 01, 2022
基于多线程快速端口扫描脚本,支持目标批量导入、结果导出。

JWS_portscan 基于多线程快速端口扫描脚本,支持目标批量导入、结果导出。如果扫描公网资产,为了提升扫描的精准性,建议放到服务器运行。 用法 依赖安装:pip3 install -r requriement.txt 支持参数:python3 JWS_portscan.py --help 脚本

jammny 5 Apr 12, 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
Build custom OSINT tools and APIs (Ping, Traceroute, Scans, Archives, DNS, Scrape, Whois, Metadata & built-in database for more info) with this python package

Build custom OSINT tools and APIs with this python package - It includes different OSINT modules (Ping, Traceroute, Scans, Archives, DNS, Scrape, Whoi

QeeqBox 52 Jan 06, 2023
ProxyBroker is an open source tool that asynchronously finds public proxies from multiple sources and concurrently checks them

ProxyBroker is an open source tool that asynchronously finds public proxies from multiple sources and concurrently checks them. Features F

Denis 3.2k Jan 04, 2023
Arp-spoofing, this script was written for people who want to spoof any vulnerable machine such as Wİndows, of course it could have been more sophisticatedly created but these repos will be updated constantly

ARP-SPOOF ARP spoofing is a type of attack in which a malicious actor sends falsified ARP (Address Resolution Protocol) messages over a local area net

2 Dec 28, 2021
Real-time text-editor using python tcp socket

Real-time text-editor using python tcp socket This project does not need any external libraries so you don't need to use virtual environments. All you

MatiYo 3 Aug 05, 2022
Fast and configurable script to get and check free HTTP, SOCKS4 and SOCKS5 proxy lists from different sources and save them to files

Fast and configurable script to get and check free HTTP, SOCKS4 and SOCKS5 proxy lists from different sources and save them to files. It can also get geolocation for each proxy and check if proxies a

Almaz 385 Dec 31, 2022
Lightweight asyncio compatible utilities for consuming broker messages.

A simple asyncio compatible consumer for handling amqp messages.

Mehdi Kamani 3 Apr 10, 2022
A server and client for passing data between computercraft computers/turtles across dimensions or even servers.

ccserver A server and client for passing data between computercraft computers/turtles across dimensions or even servers. pastebin get zUnE5N0v client

1 Jan 22, 2022
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
Remote vanilla PDB (over TCP sockets) done right: no extras, proper handling around connection failures and CI.

Overview docs tests package Remote vanilla PDB (over TCP sockets) done right: no extras, proper handling around connection failures and CI. Based on p

Ionel Cristian Mărieș 227 Dec 27, 2022
Ipscanner - A simple threaded IP-Scanner written in python3 that can monitor local IP's in your network

IPScanner 🔬 A simple threaded IP-Scanner written in python3 that can monitor lo

4 Dec 12, 2022
No-dependency, single file NNTP server library for developing modern, rfc3977-compliant (bridge) NNTP servers.

nntpserver.py No-dependency, single file NNTP server library for developing modern, rfc3977-compliant (bridge) NNTP servers for python =3.7. Develope

Manos Pitsidianakis 44 Nov 14, 2022