Sorry, it's like a way you can write browser extensions, but not have to worry about the limitations of the various browser vendors or their distribution channels, while delivering the "extended browser" by embedding it as a plug-in a web app. In essence, it's just a browser-as-API that you can embed and run inside a regular web app. This is possible because your web app only hosts the client-side interface which connects to a back-end of a headless browser running in the cloud or your server somewhere.
The no-frills, "just the browser" product, is normally called "remote browser isolation"[0] (or, RBI), but ViewFinder lets you build custom browsing extensions on top of this. So you can embed such a remote browser in your web app to encapsulate some off-site 3rd-party functionality that you nevertheless want to include in whatever process is part of that user story or task, for example, submitting a document that you just generated with the embedding web app, useful in the case where the 3rd-party provides no API to do so, making it more fluent than giving someone a list of instructions to then go off-site to follow, or doing it yourself "manually".
You can also use this interface to plug in to some existing headless browser, such as one running an automation job you have set up with puppeteer for observability and intervention if this bot gets stuck--for example, on a CAPTCHA.
One of the browsing extensions I built atop the basic RBI is "co-browsing" so you can have multiple people connect to the same cloud-based browser, from anywhere around the world, and view and interact with it simultaneously. Maybe two friends can watch a podcast at the same time and chat with the built-in chat? But mostly people are interested in this kind of thing for delivering live, real-time customer support to people who are using their app, while they interact with the client over the chat or a telephone. Ditto for training.
From a more meta level, it's a way to craft any programmable experience atop a browser, with somewhat more power that browser extensions (tho offset by the fact that my API is not well documented and can be improved for this purpose).
You run a browser in computer A, but you use the browser on computer B. How that works is B sends your inputs to A, and A sends the pixels back to B for display. B is in effect a dumb thin client.
Ideally I'd like to have something like an appliance that a customer can plug in to their local network or their Data center and that just kind of takes care of any of their remote browsing needs. One of the main costs is bandwidth so the appliance solution is better from a bandwidth point of view because then the clients responsible for their bandwidth and they can get whatever deals they can get on that and also from a trust point of view you know then all the browsing goes through their own hardware rather than having to you know consider the liability and the trust issue of sending all their browsing you know to some third party SaaS.
People approached me about using it to continue support for flash. But that didn't go anywhere and I think they found other solutions mainly because I was running in headless and I also didn't like the idea of having to lock in the browser version because of the security risks that entails. But I think if you're willing to do that and build some sort of robotic process automation for Internet explorer yeah for sure...but it would be a totally different thing to the code base than I have.
probably a way to do it would be just with a remote desktop that you could sort of create to have the same you know isolation and clean slate security properties that remote browsing you know also has.
Oh thank you very much :) but I can't really claim the esteemed mantle of true open source because: 1) the license I've chosen makes it impossible to incorporate in your product unless you also open source your product (or pay for an exemption), and 2) I've disabled issues because every time I see a demanding request i feel really sad... And I was scared to lose control of it as well as to face contract issues with contributors work when I'm licensing it to customers -- which I suppose I could mitigate with a CLA.
I sincerely hope though I can find a solution to all this which doesn't sacrifice the business but enables people to work on it and use it and incorporate it ... Without having to pay because I think they'll still be enough paying customers who want the pro version even if the community edition was completely free and open.
and I'm not sure how right now...but even though I'm not very good at thinking about this stuff right now... maybe one solution is to really separate the open source version and the paid pro version and make the open source version completely sort of free and open and sort of give it to the community to own it. but I really haven't thought that much about it and like I said I'm not that good at considering these type of things right now for whatever reason. I'm kind of reluctant to do that for now but I think this is something I need to consider, sorry.
I'm Cris I studied chemistry in Australia but always been into computer programming as a hobby as a teenager... I didn't want to work in wet labs all those chemicals in the air sort of toxic... so I thought I would parlay this hobby into a career and after I met a woman in Melbourne who lived in Taipei I moved over there to East Asia to continue a relationship with her as well as to see what sort of career I could make over here. I did a bit of work in IT in Australia but turned down a Java job because of the security clearance requirement. In Asia, I worked in a research lab as a programmer and did contracts mostly in web programming... somewhere along the line some of the contracts involved web scraping and I wanted to build something reusable.
I know there's a lot of tools out there but none of them really worked in the way that I wanted them to if I had to do this work everyday... so I set about building that tool and what I'm showing here today is a layer of that tool. It doesn't include any web scraping or automation related capabilities beyond a limited ability to run puppeteer scripts but what it is is a way to deliver a browser experience through a web app in a way that's customizable and programmable where you can change the user interface and everything like that.
The reason I chose this is because I just wanted to have one code base where I could build this web scraping product and deliver it on mobile devices on desktops on tablets and not have to worry about you know separate code bases for all those different things....
so it's sort of a platform for me to build more apps on top of.
And while I was building this I realized this layer was a pretty significant like amount of code which took me around 1 year to get to sort of an MVP and then another year to get to a more complete set of features. After putting in so much time I thought I should try to factor this layer out so that people can use it because it seems like this sort of thing is somehow useful. It's hard to pin down exactly what the niche use case is but people seem to want it for visibility into their automation in other words giving a head onto the headless browsers... As well as for delivering live training and customer support using co-browsing and just for straight up remote isolated browsing for security purposes. some people also use it for integrating third-party app processes right into their web app without their customers needing to go off site. Like a souped-up iframe or a browser view for the open web.
I never intended any of these things to be the point but I tried to roll with it as people were interested in using it in these ways.
to try to protect the work that I've done I have a public open source version with a limited feature set that nevertheless works as a remote browser that you can build on top of but I've licensed it under a fairly restrictive GPL 3 so that probably limits the use cases of people using that open source one.... and I have a proprietary you know secret version which has a better variable rate streaming of the viewport for better performance om a range of bandwidths and co-browsing built-in so multiple clients can connect and and use the browser at the same time as well as a bunch of control software for you know running multiple instances on a machine in a scalable and resource safe and secure manner.
I thoroughly enjoyed building this project because it was sort of the area that I could do a lot of damage you know working with the web and working with browsers as well as kind of touching the back end without going into areas that I didn't know so much about such as databases and things like that... but it was nonetheless a very very interesting project. I guess I'm talking in the past tense because the main phase of building that has passed and now my focus is trying to you know revamp my marketing website which I haven't done yet, change the prices that I have for the pro version and focus more on business applications. right now I basically negotiate each contract in an ad hoc manner, rather than having a standard process or prices. But I don't know how to say that on a marketing site because they all seem to have like three different plans or in a contact us for Enterprise so I don't know where I fit in on how to do that. I'll figure it out I suppose.
At some point when I recover my programming mojo after this epic marathon of 2 years of coding I want to get back to the web scraping idea. Along the way I tried to keep myself perked up with dreams and goals of startup up super success and so on and applied to YC around about 12 times with this idea and copped 12 anonymous rejections so that's been great. I think it was good though seriously because I discovered this whole subcommunity called bootstrapped indie founders who don't focus on trying to get VC money and thinking about it more that's probably more of the lifestyle that I actually want rather than chasing the giant hamster wheel, I suppose, as good as having all that cash would be, having something smaller and more manageable where I get to set the direction rather than running around at the beck and call of investors as I imagine you might have to do if you're funded...I think this different way works better for me.
But it's not like I would have chosen that at the start it's more like I didn't get the other thing so I'm making this thing work for me. Really well is my goal... right now I feel it's reasonably okay and I'm happy with it but it's also a struggle to sustain belief in the long term success of something when you're the only one driving that and when apart from people who use your product there's not really anyone around you to champion you on.
I find it makes me compensate by having an irrational amount of self belief.. I'm okay with that but it's just how it works for me to handle it, I suppose it comes with the territory. I'm sharing it here because other developers and engineers out there if they haven't seen this sort of thing before they might be interested in incorporating it into their own work and it's my hope that you're able to do that without having to worry about you know a license or paying to do so but I understand that could be difficult because of the restrictive license I've had...I wish there was some other way that I could make it more accessible for people to use without feeling like I'm compromising the business side of it.
It's sort of similar to the space that companies like browserless and diffbot and that some remote browser isolation companies are into but it's also a little bit different and to be honest I'm not really super clear on all the intricacies of the market and how will that works but my feeling is that it makes sense for me to have some sort of paid for license or for managed versions you know pay per seat or per use per month model.... anyway I'm just taking it one step at a time I'm doing okay for now and my focus I suppose is on building things on top of it as well as helping people to use it and making me
more money with that. So I really appreciate all the support that this community has given me directly or indirectly you know over the years where I've been kind of developing this and the useful feedback and the insightful discussions where I got ideas for ways that I could use it or things people wanted. I tried to follow the launch hn guidelines by dang here and.... and I'm not sure how well that's going to succeed. I'm not trying to do a big launch here or anything... like I said I haven't even revamped the marketing site yet I'd just be happy to get you know 30 or even less and you know maybe some insight comments...
I think I'm posting it today because it's just part of that process where I'm working toward doing a revamp of the marketing site which I intend to post on producthunt you know when that's ready.
Heh, thanks but it's not really about how much you can type. It's about how clearly and concisely you can say it I think... and I can definitely improve that.
Actually the above was mostly voice typing that I then punctuated and corrected...so, anyway I noticed you switched to sentence case for this comment but you're normally in lower case, no need to be so formal :)
I checked out your work on the web and you have a bunch of different personalities across your sites from a design / approach / content / voice point of view. Really diverse!
I'm gonna be here forever, and on this project too, also the copyright is with my corporation, so you're only wasting your own time if you care about that or waiting for that... what I meant was--and I know I spent a lot of words and I guess I didn't make it clear--I hope people can use it right now without having to pay. But honestly I think the easiest way to do that is just for them to write it themselves, or just rip me off in secret, haha, they can "try" I'm sure.
Seriously, tho I really would like to think I can just open it up to the community to use in a full free and open-source way, and gather a bunch of contributions and so on, without worrying I'm compromising the business side of it. Like I said above, the licenses are basically individually negotiated...because I'm an amateur I suppose...so for managed where I run it for them in the cloud it ranges from ~ 1500 to over 10K a month with my main cost being bandwidth. And on the hosted side, from ~3K a month to yearly licenses above 100K. The self-hosted ones are mostly perpetual for the version, re-upped to the latest version on the next payment, with maintenance and support contracts either included (existing for as long as license fees are paid) or separate. One of the most challenging things is contract negotiation. I discovered startups with VCs can be extremely frightened of IP clauses where they don't own everything absolutely ostensibly because their legal advisors see it as a risk to future raises.
I'm sort of glad I'm bootstrapped and don't have to worry about VC!
haha, glad you noticed and thanks for the compliments!
i think this could become an open-source BrowserStack and Cloudflare Browser Isolation alternative
generally, i’d trust a product more if it has an open source version and business-wise it makes easier to market to the developers, because they can try the product at home with no risk of getting a huge cloud provider bill
but as you pointed out, not any org can self-host and that gives you a opportunity to offer a subscription-based service
the technical difficulty here is in figuring out how to run at scale
right now, as i understand you are hosting each instance manually, which is fine for bigger clients, but makes the service for smaller developers like myself unaffordable
you could solve this by packaging the software in a Docker container and then use a orchestrator like Kubernetes to supply a copy to each client, automatically
you can then monitor the usage and issue a bill with payment provider like Stripe
generally, i’d recommend having a limited free tier, but if not possible a free trial
for paying customers, you could charge per second spent in the browser window, instead of seats
the reasoning for it, is some customers would cause more traffic than others and traffic is not inexpensive, therefor you should make a pricing model, which is linear with traffic
hope this helps
if you need further support, you can email me at mish at ushakov.co
Good ideas, and I agree with you about the market possibilities, and trust advantage of open-source, but the "manual deploy" is not actually how it works regarding paid deployments.
The open-source version is just the browser software, enough for a single person to run a single instance, but the pro "closed source" version includes a bunch of extra control software for running as many instances as will fit on a machine, in a scalable, secure and resource-safe way, as well as souped-up features like co-browsing, better viewport streaming, and built-in secure document viewing.
The open-source version actually comes with a docker image [1], but for the paid deployments I haven't seen the need for k8s. That might be because I don't understand k8s, but I just haven't seen the advantage over the way I'm currently doing it. And no-one has asked for k8s, either.
But I think what you were trying to tell me was a good way to set up a SaaS version of this. And I admit I've struggled with that in the past. I think infrastructure has been a part of this failure, but even when I've had workable SaaS offerings, I think my marketing, pricing, design and the "trust factor" -- of doing your browsing in a 3rd-party in a new category (RBI vs, say, a VPN), and also of doing so with a tiny company -- were the big things.
as to:
> you can then monitor the usage and issue a bill with payment provider like Stripe
> generally, i’d recommend having a limited free tier, but if not possible a free trial
> for paying customers, you could charge per second spent in the browser window, instead of seats
> the reasoning for it, is some customers would cause more traffic than others and traffic is not inexpensive, therefor you should make a pricing model, which is linear with traffic
I really like your very solid sounding ideas for a SaaS setup tho. Thank you very much!