215 comments

[ 3.6 ms ] story [ 230 ms ] thread
Hi HN,

About 14 years ago, I fell in love with programming because it made me feel like a magician. I'd type in some incantations, click "Run", and voila! My lightning-powered thinking rock would do exactly as I commanded — in my case, make a virtual robot named Karel move around the screen in my computer science lab.

Nowadays, casting spells requires a bit more work. Most of our work happens inside complex web apps that each have their own custom spell books (APIs) — assuming they even provide one at all.

Let's take a task like managing your social media accounts. Suppose you want to reset your Twitter account and start from scratch. First step: Unfollow everyone. The problem is that you have hundreds of accounts to unfollow, and you don't exactly want to sit there all day clicking buttons.

If you're not a programmer, your options are limited to what others have built. You can hand over your credentials to all kinds of third-party apps and extensions in the hopes of finding one that works. Good luck.

If you're a programmer, you have more options. You have the power to cast spells. What if we used the official API?

You can sign up for a developer account, get an API key, download a client library, read about how OAuth works for the hundredth time, and then start digging through the API to find out how to complete your task.

That sounds tedious and creating a developer account for a one-off task feels like overkill. What if we simulated user actions in the browser instead?

You can install Selenium/Puppeteer/Playwright, read through its documentation to learn how to navigate and click, open the web inspector to figure out the right CSS selectors, run into some race condition where the elements aren't loading in time, sprinkle in some waits, and puzzle over how to handle elements being added from the infinite scrolling list.

That doesn't sounds too great either. Maybe it'd be faster to manually click those buttons after all...

I built Browserflow to automate tasks like this where people end up wasting time doing what computers do better. I wanted a tool that makes it easy for anyone, regardless of their technical background, to automate any task on any website. It includes the convenience of features like automatically generating automation steps by recording your actions while having the flexibility of letting you tweak anything manually or write custom Javascript. (If you want to see how simple it is to automate the Twitter task above using Browserflow, here's the demo: https://www.youtube.com/watch?v=UnsGTpcA-98)

Building a browser automation tool from scratch and making it robust enough to handle all kinds of websites took much, much longer than I expected. After working on it as a solo developer for 1.5 years, I'm super excited to finally share this with you all. Whether you're a professional developer or a non-technical marketer, I hope Browserflow will make you feel like a magician on the Web.

Would love to get your feedback!

This is a really excellent sales pitch, you answered all my “why not just” questions upfront. The video makes this look very smooth to use, excited to try it out next time I have a need.
Feedback: The on-boarding workflow is so, so good. So pleasant and well thought out. Hard to believe this is the launch... I'd expect folks to go through many iterations of it and not get to something like this. Really, really well done.

Whenever I see extensions like this, it does make me wonder something which I've never fully understood: Given that so much of it runs client-side, what's the state of the art nowadays in terms of preventing someone from essentially "stealing" your extension. I've come across some extensions in the past -- even ones that were paid for and part of a business -- where it was clear that it would've been trivial to simply copy the extension code and run it on my own. How do you prevent folks from doing that?

Oh, don't be fooled — many of my friends have had to go through much worse onboarding experiences to get to what it is right now. ;) Appreciate the kind words!

The two pieces that make it harder for someone to simply copy the extension code and run it themselves is (1) Javascript minification and (2) parts that talk to a server.

Someone can try to reverse engineer the calls to a server and run their own, but that's often more work than most people are willing to go through and it's made harder by the client code being minified.

I wish it were possible to open source extensions without running into this problem because I like sharing things I've built (https://github.com/dkthehuman/), but doing so effectively kills the possibility of building a business on top of it unless you maintain two code bases (one free and one paid) at which point it's more trouble than it's worth IMO.

this is dope! I've been thinking about building something this for a few months now. Glad to see that I don't have to anymore! :D
Nice work! I've been trying a few similar tools. How do you handle auth (e.g. LinkedIn) when the work is running in the cloud?
I think in the video, he was getting the original cookies from the website, and reusing them in the cloud
Thanks! Auth is handled when running in the cloud by adding the relevant cookies to the cloud flow.
Beautiful UI. Hope this takes off. Love the simplicity of the design and the ease of use. If it could make writing my Cypress UI tests easier, that might be another adjacent problem to look into, by logging the recorded elements as code.
Thanks! Right now you can use it for testing by throwing an error from the flow (using the Run Script command) if the result differs from what you're looking for (e.g. an element doesn't exist, some text doesn't match the expected output) and Browserflow will email you when the flow fails. It's currently not optimized for that use case though, so if it becomes popular, I'd probably look into adding more support for testing.

I've thought about adding support for generating a self-contained bundle of Javascript code from the flow that anyone can self-host and run, but that hasn't been a priority for the current use cases. Will keep it in mind — thanks for the suggestion.

Congrats, looks great, especially the UX.

Could you elaborate on cloud runs and cookies? E.g.:

- How are the cookies obtained? I saw that in the video you clicked the "add" button at 1:36, how does this work and what happens behind the scenes?

- How long do the cookies remain in use? Does the user have to refresh cookies manually at some point?

When you click the add button, the extension grabs the cookies for the specified domain from your desktop browser and attaches it to the flow to be used when running in the cloud.

The cookies are used for as long as the user keeps them in the cloud flow. (Browserflow doesn't try to be smart and automatically refresh the cookies on your behalf because there are scenarios like using multiple accounts in the same browser, etc.) Most major sites use quite long expiration dates for cookies (a year is fairly common) so there usually aren't issues with cookies becoming invalid for a while.

i recall that browser would soon make it harder for extensions to grab cookies like that, does somebody know more?
(comment deleted)
Are you aware of limitations around site support with this approach?

Several years ago I implemented a similar feature just reversed - A remote machine logs a user in, then passes the cookies that result from login to an extension running in the user's browser, which drops them into the browser's cookie jar.

Worked very nicely, right until you run it to log into a service like GMail.

Then Google correctly notes that you're using the same cookie in two different locations, assumes you've been session-jacked (and you have, really - you just did it willingly), and locks EVERYTHING. It took a notarized copy of my drivers license before they let me back in.

Might behoove the author to offer a proxy via the extension or whatever so that the cookie is generated and used on the same subnet.

I don't know how accurate Google can be, though, as I route Gmail traffic from the same cookie through three ISPs and a self hosted VPN, without refreshing.

I like the name. But how is this extension different from iMacros, Selenium IDE or UI.vision?

These extensions are some well-known browser automation tools, each with > 100K users.

Did you look at them and decided to do something different?

Yup, I've tried dozens of tools in this category, and here are some of the main differentiators:

- Ease of use: Most existing tools have pretty clunky UX and are hard to get started on

- Reliability: I've had issues with many tools simply not working, especially when it comes to more complex sites

- Cloud: Browserflow lets you deploy your flows to the cloud to run them on a schedule whereas many tools are local-only

Hope that helps!

I was skeptical at first, but your comment convinced me to take a look. It really is much easier and cleaner, and having it run in the cloud is amazing!

Nice job!

I’ve using iMacros, it’s not as easy as this one
This is so slick. I think I'll give it a try. Thanks!
Really neat, that's the kind of stuff I always wanted someone to build. I think a marketplace of workflows would be a great next step, so that you can have someone else maintaining the flows.

I build tons of scraper and things that pretend to be browser (handcoded, not recorded from the browser - but lighter than spinning up a real browser) and the harder bit is keeping the flows maintained. Some websites are particularly annoying to work with because of random captchas jumping in your face but it's something you can handle by coding support for the captcha in the flow and presenting a real user the captcha.

One problem of logging in the cloud is IP checks. You may be asked to confirm.

If you want to look into this issues I'd recommend scraping yandex for dealing with captchas being thrown in your face and authed google or facebook for IP restrictions, weird authentication requests.

Again, I think a marketplace could outsource these problems to a community of developers maintaining flows.

Security could be another concern, but you always have the option of running things locally.

For sure! I'll definitely be exploring the marketplace idea. Currently, you can share flows and import flows that others have shared, but there isn't (yet) a nice way to discover ones others have made or charge for flows you've made.

Maintaining flows as sites change is definitely a drawback for any scraping solution, so I built features like generating selectors by pointing and clicking to make it as easy as possible.

Browserflow Cloud has built-in support for rotating proxies and solving CAPTCHAs to get around the issues you mentioned. (They're currently in private beta.)

Just curious, why do you offer residential ips? My initial thoughts are reseller botting, but it honestly seems kinda slow for that, not to mention max rate of 1/min. So what else are residential ips good for?
Yeah, Browserflow definitely wouldn't be able to compete with specialized bots for reselling in terms of speed.

I added support for residential IPs to handle sites that employ aggressive bot detection, but it's in private beta and so far there hasn't been much of a demand for it. If it turns out that it's not really needed for the use cases people have, I might just remove the feature!

>So what else are residential ips good for?

Chances are if you've thought of something you could scrape that would offer a broadly popular, real tangible benefit, they employ anti-bot measures that don't like non-residential ips.

Damn dk! This is awesome I’m following you and browserflow sometime. This post should be on top for days straight atleast guys
Thanks for following along — I appreciate the support!
Too bad headless chrome seems uninterested in supporting browser extensions..."wontfix"

https://bugs.chromium.org/p/chromium/issues/detail?id=706008

Otherwise, you could make a pretty neat self-hosted "cloud" of this nice looking scraper extension.

I built Browserflow Cloud for that purpose ;)

It was a lot of work translating the extension code to work with headless browsers, but it means you can deploy your flows to the cloud and have it run automatically!

Yes, sure. Just that some use cases, like internal applications that aren't exposed to the internet, or dev instances of those that are, would be difficult.
What type of app did you have in mind?
automation/screenshotting of a bespoke internal ticketing system (aka not-Jira), but without needing to have my laptop on.
Recently a `--headless=chrome` flag was added to run headless mode using actual chrome browser code, which means extensions are now supported!
Sounds promising, thanks for sharing! "--headless=chrome" isn't google searchable, so I'm still looking for details.
Isn't the "chrome" value for "headless" parameter ignored? Maybe he simply meant the --headless switch (since Chrome 59) https://developers.google.com/web/updates/2017/04/headless-c...

EDIT: --headless is under kHeadless https://sourcegraph.com/search?q=context:global+repo:chromiu...

Oh, then it isn't helpful news. Headless does not support extensions.
I mean the CLI flag. I suppose it's called a switch. And yes, it does support extensions if you do --headless=chrome
Beautiful UI. What's the framework -- React? Vue? Angular?
I'm loving the nice comments about the UI because it's all good ol' Bootstrap. Tools in this category usually have pretty terrible design so I guess the bar is quite low. ;)

I'm using React for the Javascript!

Really great job with this. Definitely fills a need
I'm a speech therapist who does teletherapy. I routinely fill out a lot of web forms. I've already created one automation that will save me time, and I have ideas for several more automations. Thank you so much for making this!
Oh man, this makes me super happy to hear. Enjoy, and feel free to reach out either by email (support@browserflow.app) or on the Discord if you need any help with your automations!
If you'd be so kind... I'm helping a similarly standardized testing industry, how are you using this extension?

And DK: I didn't see it immediately - does an affiliate program for solution architects sound right / in the roadmap?

I hadn't considered it, but I'm happy to explore that option. Feel free to email me at dk@browserflow.app
The main thing I want to do with this extension is to speed up my documentation process. For every therapy session, I have to fill out a web form that details what happened during the session, including subjective info and objective data regarding the therapy goals. I already record the data in a Google Sheet, and it would be great to have a one-click solution to transfer that into the web form!

Right now, I have an automation for updating Zoom meeting info, and one that fills out the web form with standard info I include for nearly every session.

Interesting.. are you learning/using programming as part of your work or for your own interests? If not, I'm curious what value you feel you get from Hacker News; I know a lot of non-programming topics get discussed here, I just typically assume the audience here skews more towards people working in technology/software-related fields.
I tried teaching myself programming at one point, but it didn't really "click" for me. I browse HN for the non-programming topics. I steer around the "built with Rust" posts (and other programming motifs).

The value I get from Hacker News is the aggregation of interesting web content, good discussion, and learning about new apps like this one :)

Very helpful for automating hiding “topics” on Twitter!
Can you please elaborate what you mean?
On my twitter feed, I keep seeing tweets from something twitter calls "topics". Apparently they were automatically assigned to me based on previous tweets I had liked. Didn't want to see any tweets from people I don't follow. And instead of having to unclick 200 topics or so, I used this app to automate removing them from my profile.
This looks really interesting!

Do you have any plans to port it to also run on Firefox?

I really wanted to make it run on Firefox as I do with all my other extensions (e.g. https://news.ycombinator.com/item?id=22936742), but Firefox lacks the APIs that Chrome has for automating the browser. :'(
Neat!

I think your business plans are underpriced. You're saving human hours with increased accuracy, which probably is worth more than $25/month.

edit: nevermind. Your annual pricing shows per-month pricing which is $299/month.

I felt the entire opposite. There's no room to actually use the product well in a trial (free), and the next steps up are quite expensive.
I agree. There are a number of free open source tools, albeit with "worse" UX.

Although maybe he is aiming for people who are zero technical competence. I admit I would not have invested in Dropbox because I grew up with ftp.

Very nice! Just be careful, Twitter is pretty aggressive with banning accounts that use automation.
If this could take screenshots, I would signup in a heartbeat.

Here is my need (and I've had this need my whole working career": What does production look like?

If a tool could automate loggin in, browsing specific flows, take screenshots of every page, and add them to a folder of the day, it would invaluable.

Sikuli http://sikulix.com/ could perhaps be helpful.
Sikuli is good for desktop automation. For browser automation an extension based solution (such as this one) is easier to use.
You're in luck! Browserflow can take screenshots and save them to Google Drive every day. :)

Take a look at the "Take Screenshot" command and feel free to message me on the Browserflow Discord if you need help.

> and save them to Google Drive

No, thank you. Please offer a local save option.

How much are you offering for this feature?
If you run the flow locally, it'll save locally.

If you run the flow in the cloud, it'll need some place to persist it so I've chosen Google Drive to start. If there's enough demand, I'd be open to storing it on Browserflow's servers and providing an API to access the files but I'd want to make sure that's something enough customers want before sinking my time into it.

I'm not (yet) a Browserflow user, but it's something that I'm going to either pitch or just skunk into my workflow. But when that time comes, I will absolutely need a first-party way to download screenshots. I'd be open to pulling them from an S3 bucket, but absolutely not from Google Drive.

That time is at least a few weeks off, though, probably after the new year.

Do you think you would buy this if it does? Seems pricing is high
How about a few lines of python with selenium?
(comment deleted)
You could also do most of this (except adding the screenshot to a folder, but you can get it via api if you need) and more with our free plan - https://www.rainforestqa.com/
Jon, what's the main pain or goal with capturing a screenshot for every page that you visit?

It's tricky to do on your machine, so that performance doesn't suffer. At the end of the day, all full-page PDF generators would have to scroll to the end of the page, which would make it really tough for you to browse around.

A solution to this would be to just capture the URLs that you visit, and then do the screenshot generation in the cloud. The limitation is that none of your websites with logins would get captured.

Local storage is another issue for Chrome Extensions. There is a limit to how much data that can be stored.

I'm not a programmer so it would need to be easy enough to set up and maintain.

Logged in states are a must have.

I worked with a test automation system a while back that used ffmpeg to screenshot a headless browser. Similar approach might be workable on desktop.
What is the specific use case or value that you extract from saving those screenshots?
Congrats on the launch DK! It's awesome to see how polished you've made this.
Thanks Todd! Reflect has been a big inspiration for how smooth the user experience could be. Happy to see us both on the front page today! :)
Whilst nice, how is this going to handle the changing nature of the web? It's nice that it detects "lists" and such, but a few changes to CSS is going to trash that automation right?

I'm also fairly sure you'll break (either directly, or on a user's behalf) a few EULA's that really specifically ban scraping.

Didn't this case [0] set a precedence that "scraping is not against the law" irregardless of EULA?

[0] https://en.wikipedia.org/wiki/HiQ_Labs_v._LinkedIn

"using data that is publicly available"

If the user is logged in, that data may not be publicly available, and the EULA would still apply.

So it was proven that it's not a criminal offence to scrap a website, but a website is still well within it's rights to ban you from doing so.
(comment deleted)
This might be true in the USA, but the EU has a thing called database rights[0]. Essentially, any collection of data can under certain circumstances be protected under database rights, which prevents other parties from copying (parts of) it. This originally was created to protect such things as phone books and other directories, but when I was a student (I don't remember the context anymore), they specifically warned us that scraping certain websites would violate their database rights, and thus be illegal. So using scrapers in the EU is something you should be very careful with, especially if your business depends on it.

[0] https://en.wikipedia.org/wiki/Database_right

Pedantry: regardless
You pedantic piece of... nah I'm just kidding, Thank you. I actually learned English by watching Clint Eastwood, Charles Bronson and Sylvester Stallone movies, so my grammar might be slightly off from time to time, but google actually agrees with me when I say: irregardless == regardless.
https://en.wikipedia.org/wiki/Irregardless

https://www.merriam-webster.com/dictionary/irregardless

I dislike that word more than I dislike "nucular". Like diarrhea, anyone can let it slip.

Ah, so people've been making this mistake for over two hundred years but thanks to people like you, this misuse of language has been all but eradicated?

Radicated?

;)

That is quite the pun!

I tend to remind people who think that this is an error that, although I share their disliking...

- There is a case for the word and it predates us

- Languages are dynamic and today's "correct" spelling is yesterday's "erroneous" spelling.

I thought until recently that the spelling was "simply incorrect" until I found out there was more to it. It therefore is a reminder to myself as well.

> but a few changes to CSS is going to trash that automation right

hence why it's nice to have that extension to click through the UI rather than figure out how to parse things no?

Congrats on the launch DK!!!
This is awesome. Congratulations on the launch. I can see a number of use cases for Marketing, CS, and Sales orgs