An npm module to run Snowflake in a headless browser to help censored users connect to the Tor network.

Overview

snowflake-cli

An npm module to run Snowflake in a headless browser to help censored users connect to the Tor network.

Note: depending on your environment, it may be simpler to run Snowflake using Docker/Ansible or compiling the golang source. You can also consider running an obfs4 bridge.

installation

npm install snowflake-cli

then run snowflake-cli to start the proxy.

on linux, you may need to install the following prerequisites:

sudo apt install npm libatk1.0-0 libatk-bridge2.0-0 libcups2 libxkbcommon0
libxdamage1 libgbm1 libpango-1.0-0 libcairo2
You might also like...

A group listening chat app that utilizes the spotify api to enable the users to queue, pause, change songs, as well as chat with each other

Next.js + Tailwind CSS Example This example shows how to use Tailwind CSS (v3.0) with Next.js. It follows the steps outlined in the official Tailwind

Dec 19, 2021

rtail(1) - Terminal output to the browser in seconds, using UNIX pipes.

rtail(1) - Terminal output to the browser in seconds, using UNIX pipes.

rtail(1) Terminal output to the browser in seconds, using UNIX pipes. rtail is a command line utility that grabs every line in stdin and broadcasts it

Jan 6, 2023

The easiest way of running code in a browser environment

browser-run The easiest way of running code in a browser environment. Bundles electronjs by default! Usage $ echo "console.log('Hey from ' + location)

Dec 19, 2022

A pipe to browser utility

A pipe to browser utility

node-bcat Pipe to the browser utility, Very useful for log tail fun :) node-bcat features auto scrolling (with enable/disable), ansi to html coloring

Dec 30, 2022

⚡️The Fullstack React Framework — built on Next.js

⚡️The Fullstack React Framework — built on Next.js

The Fullstack React Framework "Zero-API" Data Layer — Built on Next.js — Inspired by Ruby on Rails Read the Documentation “Zero-API” data layer lets y

Jan 4, 2023

An npm package for demonstration purposes using TypeScript to build for both the ECMAScript Module format (i.e. ESM or ES Module) and CommonJS Module format. It can be used in Node.js and browser applications.

An npm package for demonstration purposes using TypeScript to build for both the ECMAScript Module format (i.e. ESM or ES Module) and CommonJS Module format. It can be used in Node.js and browser applications.

Dec 28, 2022

KochSnowFlake - implementation of Koch Snowflake with React+ TS

KochSnowFlake - implementation of Koch Snowflake with React+ TS

Koch Snowflake if you just want to play with it, follow, FOLLOW THIS LINK if you are curios about math of this project, FOLLOW THIS LINK installation

Mar 13, 2022

A social network to connect web3 users and their communities.

Introduction This project is built using react, tailwindcss and Moralis (documentation) for our backend. We are also heavily using the built-in Morali

Jan 5, 2023

npm i uuid, npm i nodemon, npm i commander

npm i uuid, npm i nodemon, npm i commander

goit-nodejs-hw-01 Получаем и выводим весь список контактов в виде таблицы (console.table) node index.js --action list Получаем контакт по id node inde

Jul 5, 2022

🚀 Send a load of requests with nodejs using cluster and with/without Tor for anonymisation 🙈

Accumulator 🚀 Send a load of requests with nodejs using cluster and with/without Tor for anonymisation 🙈 ⚠️ Disclamer, This repo has been created fo

Nov 21, 2022

Create and Host a dark Web Site (Tor Hidden Service)

Tutorial: Hosting a site on Dark Web (Tor Hidden Service) Introduction Before starting, lets clear some questions that might come up in your mind: Wha

Oct 18, 2022

CLI utility that broadcasts BTC, ETH, SOL, ZEC & XMR transactions through TOR using public block explorers

tx-tor-broadcaster CLI utility that broadcasts BTC, ETH, SOL, ZEC & XMR transactions through TOR using public block explorers. Provides a great degree

Dec 25, 2022

Connect Web Integration illustrates the integration of Connect-Web in various JS frameworks and tooling

Connect Web Integration Connect Web Integration is a repository of example projects using Connect-Web with various JS frameworks and tooling. It provi

Dec 29, 2022

A web app to post emoji implemented in connect-go and connect-web.

A web app to post emoji implemented in connect-go and connect-web.

emotter Emotter is an app to post and share single emoji. This is an example app of connect. Example https://emotter.syumai.com API: Cloud Run Web cli

Oct 30, 2022

e-ONG, an authorial project, whose objective is to help ONGs to find people who need help or would like to help them

This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: npm start Runs the app in the developmen

Nov 11, 2022

A browser only tool for converting npm package to ES module.

es-modularize A browser only tool for converting npm package to ES module. This library allows the following code to work correctly in browser thanks

Dec 13, 2022
Comments
  • Missing dependencies on Ubuntu-server

    Missing dependencies on Ubuntu-server

    Did an install on a minimal Ubuntu server, and ran into an exception:

    vagrant@ubuntu-focal:~$ npm install snowflake-cli
    ⸨##################⸩ ⠸ reify:puppeteer: http fetch GET 200 https://registry.npmjs.org/puppeteer/-/puppeteer-13.4.0.tgz 3588ms (cache miss)
    
    added 59 packages, and audited 60 packages in 10m
    
    8 packages are looking for funding
      run `npm fund` for details
    
    found 0 vulnerabilities
    npm notice 
    [snip]
    npm notice 
    vagrant@ubuntu-focal:~$ snowflake-cli
    /usr/lib/node_modules/snowflake-cli/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:237
                reject(new Error([
                       ^
    
    Error: Failed to launch the browser process!
    /usr/lib/node_modules/snowflake-cli/node_modules/puppeteer/.local-chromium/linux-961656/chrome-linux/chrome: error while loading shared libraries: libxkbcommon.so.0: cannot open shared object file: No such file or directory
    
    
    TROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md
    
        at onClose (/usr/lib/node_modules/snowflake-cli/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:237:20)
        at Interface.<anonymous> (/usr/lib/node_modules/snowflake-cli/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:227:68)
        at Interface.emit (node:events:532:35)
        at Interface.close (node:readline:586:8)
        at Socket.onend (node:readline:277:10)
        at Socket.emit (node:events:532:35)
        at endReadableNT (node:internal/streams/readable:1346:12)
        at processTicksAndRejections (node:internal/process/task_queues:83:21)
    vagrant@ubuntu-focal:~$
    

    Was able to resolve this by following suggestion in https://twitter.com/GEDSIC/status/1497942591807102978https://twitter.com/GEDSIC/status/1497942591807102978 to apt-get install certain dependent packages:

    vagrant@ubuntu-focal:~$ sudo apt install libatk1.0-0 libatk-bridge2.0-0 libcups2 libxkbcommon0 libxdamage1 libgbm1 libpango-1.0-0 libcairo2
    

    Then was able to launch snowflake-cli successfully:

    vagrant@ubuntu-focal:~$ snowflake-cli
    loaded
    Snowflake: == snowflake proxy ==
    Snowflake: Disabling Snowflake.
    Snowflake: Currently not active.
    Snowflake: Starting snowflake
    Snowflake: Using snowflake.freehaven.net:443 as Relay.
    Snowflake: Snowflake IDs: [redacted]
    Snowflake: Polling broker..
    NAT type: unknown
    Your Snowflake is ready to help users circumvent censorship
    Your Snowflake is ready to help users circumvent censorship
    Snowflake: proxypair datachannel timed out waiting for open
    Your Snowflake is ready to help users circumvent censorship
    Your Snowflake is ready to help users circumvent censorship
    Setting NAT type: restricted
    Your Snowflake is ready to help users circumvent censorship
    Your Snowflake is ready to help users circumvent censorship
    Snowflake: Snowflake IDs: [redacted]
    Snowflake: Polling broker..
    NAT type: restricted
    Your Snowflake is ready to help users circumvent censorship
    
    opened by straxus 0
  • Client Capacity

    Client Capacity

    Not sure if this is an issue, local limitation or if it's normal, but I've been using it since yesterday and it's working amazing! The only question I have is that I'm not able to get more than 1 person connected at the same time, and when I have someone connected, it keep saying "Client at capacity".

    Does it mean that, for some reason, I can't help more than one single person at the same time?

    Snowflake: At client capacity.
    Number of users currently connected: 1
    Number of users currently connected: 1
    Number of users currently connected: 1
    Number of users currently connected: 1
    Number of users currently connected: 1
    Number of users currently connected: 1
    Snowflake: At client capacity.
    Number of users currently connected: 1
    Number of users currently connected: 1
    Number of users currently connected: 1
    Number of users currently connected: 1
    Number of users currently connected: 1
    Number of users currently connected: 1
    Snowflake: At client capacity.
    Number of users currently connected: 1
    Number of users currently connected: 1
    Number of users currently connected: 1
    Number of users currently connected: 1
    Number of users currently connected: 1
    
    opened by ghost 2
Owner
yan
0.1x engineer
yan
Uses marked-terminal to render a README.md for any npm module in the terminal.

modhelp Uses marked-terminal to render a README.md for any npm module in the terminal. Now with built-in pager! Page up/down, arrow keys to scroll lin

Jason Livesay 23 Feb 8, 2022
A better `npm publish`

np A better npm publish Why Interactive UI Ensures you are publishing from your release branch (main and master by default) Ensures the working direct

Sindre Sorhus 6.9k Jan 2, 2023
Check NPM package licenses

NPM License Checker As of v17.0.0 the failOn and onlyAllow arguments take semicolons as delimeters instead of commas. Some license names contain comma

Dav Glass 1.5k Dec 29, 2022
Open the npm page, Yarn page, or GitHub repo of a package

npm-home Open the npm page, Yarn page, or GitHub repo of a package Install $ npm install --global npm-home Usage $ npm-home --help Usage $ npm

Sindre Sorhus 180 Dec 18, 2022
Check whether a package or organization name is available on npm

npm-name Check whether a package or organization name is available on npm Install $ npm install npm-name Usage import npmName from 'npm-name'; // Ch

Sindre Sorhus 157 Nov 13, 2022
Package manager faster than NPM

Pine Script holder that runs faster than NPM and yarn Pine is a npm and yarn run like module, that allows you to organize your scripts and run them FA

Darkling 4 Jul 10, 2021
Add a hungry turtle to your terminal and feed it every time you mistype 'npm' as 'nom'

Nom Does this ever happen to you? You happily code away on a project, navigating the command line like a pro, testing, error logging, installing packa

Meike Hankewicz 5 Apr 26, 2022
Run a command when a certain file exists, and/or watch files to rerun on changes

Run a command when a certain file exists, and/or watch files to rerun on changes

EGOIST 45 Sep 23, 2022
Simple config handling for your app or module

conf Simple config handling for your app or module All you have to care about is what to persist. This module will handle all the dull details like wh

Sindre Sorhus 1k Jan 7, 2023
An extension geared towards Spotify users with larger libraries; view all your playlists that contain a specific song with the click of a button. Designed for Spicetify (https://github.com/khanhas/spicetify-cli)

ViewPlaylistsWithSong An extension developed for Spicetify that allows you to view all the playlists in your library that contain a certain song. Idea

null 21 Dec 13, 2022