Show HN: Free open-source isolated browser for security
github.com
github.com
And I'm not talking under-powered VM, I mean 8-CORE, 48GB RAM, 400GB NVME SSD, 2Gbit connection, NVIDIA Tesla V100 16 GB... [0]
Pricing makes no sense!
Then you'll be able to compete with Cloudflares Browser Isolation feature.
Curious why not run normal chromium and vnc the whole screen back using a web client such as novnc, would have solved most of your "Normal Browser UI things not yet implemented"
Short answer is because a lot of the work of this was building a custom "head", so having a browser engine without a head made sense. Slightly more detailed answer below... :) ;p xx
I might experiment with xvfb chrome and vnc in future. Other people certainly have success with this, e.g Reflect (YC S20)[0]. Maybe I got here accidentally. Original purpose was for mapping web app structure, and recording and replaying of web action sequences (automation) from any device. As most of the time the browsers were going to replay without anyone using them having xvfb seemed unnecessary. And doing the mapping and recording in one platform (real chrome + xvfb) then replaying in another I thought would risk many unnecessary, difficult bugs. Also having my own wire protocol based on DevTools, rather than use what a VNC web client uses, I believed would assist in more reproducible recordings and playback for automation.
Also I liked the flexibility and control provided by headless+devtools to change the UI, easily work on mobile, custom handlers for tasks like file upload and other modals, as well as the control over the viewport streaming. On streaming, I experimented a lot to get something working across a range of bandwidths, and settled on: a per-frame ack (to avoid congestion), frames over webrtc or binary werbsocket channels, and periodically switching to whichever of webrtc of websocket is faster.
I also want it to be really scalable. And I thought that headless+devtools would be much less resource heavy than chrome+xvfb, but I have no hard data on that and can't find any.
Plus I just liked the challenge. Plugging in Chrome+xvfb+VNC just seemed too easy, and I wanted something "meatier" (apologies to vegetarians, I'm on my way there, 'Proteinier'?) I could dig my hands into :)
Knock it down 25%, unless its 100% genuine. Seems a bit forced from here.
Another thing you could look into is https://www.brow.sh/ -- they also have a pretty good performance and feature coverage. Maybe there's something your project can learn from them :-)
For brow.sh it's kind of a sad project. I mean because it's so popular, with > 13k stars, but the poor guy's only making USD44 a month from this work. I feel so sad to see that. It's very niche, and too niche and restricted for what I'm doing, but one thing I can learn from them is not to be them. I don't want to be doing this labor of love and putting in all that work, and then at the same time asking for donations and only getting 44 a month.
:(
I like the text thing but it's just not what I'm looking for with this. I mean there might be but I don't think there's anything more I can learn from it :P ;) xx
They use a custom web VNC client with WebP. Definitely they have higher perceptual framerate and slightly higher responsiveness (actual lag) but the responsiveness is about the same. The real difference is the higher perceptual framerate. I think this is because of how VNC works by sending rectangles of only the changed region instead of the entire screenshot in WebP as I do.
When you compare the framerate on scrolling, or on full screen video, there's not much difference between the Kasm Web demo above, and my demo. With that said, there's definitely room for improvement in my framerate. And I could improve responsiveness with geodistributed endpoints (right now, I'm just using a server in Ohio).
So in future I could add support for checking the changed region, and sending only that region (possibly using the chrome LayerTree to only get and send the changed layers). So I could do that to increase framerate, while still getting all the benefits of my approach, such as full control of browser UI, seamless text pasting, file upload, co-browsing and seamless working on mobile. None of these things are supported by Kasm (at least in the demo above).
However, my focus is not on improving framerate right now. It's on building other features on top of this platform (such as the co-browsing support I added recently), and marketing.
Also I noticed both brows.sh and the Kasm web VNC demo take a long time to load. My app loads basically instantly, and has essentially the same responsiveness, making it highly useful for all kinds of work, as long as you are OK with the lower framerate.
I could also easily "increase" framerate by decreasing the image quality, and I'm considering adding a slider for that.
One thing that really impressed me about the Kasm demo was the audio was instant. I haven't been able to work out how to get rid of the 3 - 13 second lag I get with my pulseaudio / parec / lame setup. I wonder how Kasm is capturing and sending audio !! :P ;) xx
set +e;
message="$1"
git submodule foreach --recursive 'gut "'"$message"'" || :'
git add .; git commit -m '"'"$message"'"'; git pull; git push;
set -e;
and my goto "save work" command like is `$ gut OK` :)perhaps you can help me fix that script so I can use multiword commit messages without the quotes??? :) ;p xx
[0]: https://github.com/i5ik/environments/blob/master/commands/gu...
message="$1"
git commit -m "$message"
You'll have to pass the words in quotes though. Which I'd prefer because it's the common way. Otherwise you'd use message="$@"(which I discovered via Michael MJD's YouTube channel: https://www.youtube.com/watch?v=5MjZdKtv9ak)
clientless, opne-source dual-licensed
I believe Mighty works mighty different. They have a focus on crystal clear ultra fast video streaming of the viewport (I'm not sure of their setup, but I've seen suhail tweet about GPUs and one tweet of an image of a "MPEG compression textbook"). I've considered experimenting with ffmpeg as well, but I'm satisfied with my current solution's usability and responsiveness, and low lag over a range of bandwidths, which I prioritize over high framerate, and for what I originally wanted it for a high frame rate didn't matter.
People have often commented that the frame rate is too low, or they would like me to make them a "co-browsing / remote browser video streaming" system to stream videos or watch them together. I just think doing streaming really well at high volume is both incredibly expensive and very difficult. I do this alone and I'm coming to the end of my (very gratefully received) GCP "cloud for startups" free credits, so "I have no plans to announce at this time" about doing ffmpeg or not :)
I suppose that's better that it doesn't work. I don't think Netflix / Spotify would be cool with that. It's a little disappointing to not me able to test out Netflix on this, but less risky :P ;) xx
Eh, no, this is because of DRM. The DRM that browsers now offer (wtf) allows browser applications to black out themselves if they detect things like screen recording. Not sure exactly how the implementation works (as DRM is generally a black box, on purpose), but it definitely is on purpose and not really related to hardware acceleration.
The API Zoom is using for screen sharing is probably the same API you'd use to record the screen, so when Netflix detects that, they chose to black out the content.