Show HN: I made a Chrome extension that can automate any website
browserflow.app
browserflow.app
The value I get from Hacker News is the aggregation of interesting web content, good discussion, and learning about new apps like this one :)
And DK: I didn't see it immediately - does an affiliate program for solution architects sound right / in the roadmap?
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.
"CoScripter" (2007) <https://blog.mozilla.org/labs/2007/09/coscripter/>
"IBM Automates Firefox With CoScripter" (2007) <https://www.informationweek.com/software/ibm-automates-firef...>
"Your personal assistant on the Web" (2010) <https://www.ibm.com/blogs/research/2010/10/your-personal-ass...>
"Koala: Capture, Share, Automate, Personalize Business Processes on the Web" (2007) <https://ofb.net/~tlau/research/papers/koala-chi07.pdf>
"CoScripter: Sharing ‘How-to’ Knowledge in the Enterprise" (2007) <https://ofb.net/~tlau/research/papers/leshed-group07.pdf>
"Here’s What I Did: Sharing and Reusing Web Activity with ActionShot" (2010) <https://ofb.net/~tlau/research/papers/p723-li.pdf>
Demo: <https://www.youtube.com/watch?v=lKIex_XAxWw>
Source code (bitrotted, of course): <https://github.com/jeffnichols-ibm/coscripter-extension>
https://apify.com/ (YC F1)
https://axiom.ai/ (YC W21)
https://www.progress.com/imacros
https://trysmartcuts.com (YC W21)
3 of these are YC companies. Reminds me of mixpanel vs segment vs amplitude, where YC are backing all the horses.
Each company is different in its particular approach and niche, though. This is inevitable with any large, or potentially large market.
Disclaimer: Co-founder of axiom.ai
Doesn't look like a VC-backed app right now.
Compared to DK website, his looks way way more polished.
Just my two cents.
The homepage bears the scars of a lot of experiments. In pitches, I have had VCs complain about the website. I explain that we optimised for fast, messy iteration and learning. Then I explain what we've learned over X iterations. They've gone onto write cheques.
Still - it's messy and could do with a blank-slate refresh soon. We have new messaging to test.
He'd be better off running some javascript on the page instead (a-la Tampermonkey, but can be done really nicely with some server-served TypeScript) to scrape the pages stealthily and perform actions.
Most anti-Puppeteer tech analyzes the state of various browser Javascript objects, and if you run Puppeteer in headful mode with plugins like https://www.npmjs.com/package/puppeteer-extra-plugin-stealth you'll bypass most detection.
Talk with berstend (author of puppeteer-extra/stealth), join their Discord or read some of his Github comments and you will quickly get confirmation that none of those methods are good enough in 2021 (even with residential proxies or CGNAT 5G proxies).
is enough to pass all the tests above with cuprite (Ruby), without needing any extra plugins
From what I understand, this is only useful for doing scrapes manually by launching the target URL in a GUI Chrome instance? Or can this somehow work on a headless server? (I don't understand how one can automate this.)
1. By sharing authentication cookies they provide full control over their personal account
2. By using this automation they often violate Terms of Services and may be banned.
I bought the pro version of a great scanning application years ago, only to have it eventually become malware as it exchanged hands over and over.
I've just used what's built into the OS these days. Not as good, but good enough post-covid where documents can be fully digitally executed.
I often had to manually add branching on certain conditions (i.e login) or waiting for certain conditions (elements appearing) before proceeding.
I also often had to manually tweak selectors and even matches on html structurally (css selectors cannot select a parent element based on a matching content element).
Then there are the webpacked react sites that scramble css class names that change all the time.
Some of these things are super tedious to solve for even manually so I am just curious how no-code tools handle these?
There's also support for a few unofficial pseudo-selectors (:contains and :has — see https://docs.browserflow.app/guides/selectors#writing-your-o...) to make selecting elements more reliable.
Hope that helps! Agreed that creating reliable automations for the Web is challenging and hopefully Browserflow will make it easier for many folks.
I found the UI slight challenging because of a popup window that opens. Resizing is tricky. Overlay would make is so much easier.
Our team at Bardeen.ai has built a workflow automation tool. We also have a scraper to extract data. But our full automation engine (similar to Zapier/Integromat) allows to tap into the full power of web apps. Like creating a new Google Sheet / Airtable / Notion with the scraped data and then triggering follow up actions.
If you are curious, here is a “live build” that I did for the Twitter --> Airtable use case. https://www.bardeen.ai/posts/scrape-twitter
Jon mentioned in the other thread automated screenshots. We get screenshots of all of our dashboards from Google Analytics + Posthog sent to our Slack daily. https://www.bardeen.ai/playbooks/send-website-screenshots-in...
Either way, great job there! Love seeing new automation projects pop up.
P.S. - I saw there is an “input” action. Can I feed your automation tool a spreadsheet of data and have it fill out form? (one per row)
Not sure what you're referring to with the "input" action, but there's a "Loop Spreadsheet Rows" command that will let you perform a set of actions per row in a spreadsheet.
Bardeen looks super look, we are also building something very similar but very much focused on Web Automation, you can build cross platform automations on TexAu - https://texau.app
I’m thinking we should integrate with Bardeen and it will be open up so many more possibilities
~ Vikesh
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!
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?
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.
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.
Take a look at the "Take Screenshot" command and feel free to message me on the Browserflow Discord if you need help.
No, thank you. Please offer a local save option.
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.
Of course don’t spend the cycles building until demand presents itself.
[1] https://developers.cloudflare.com/logs/get-started/enable-de...
That time is at least a few weeks off, though, probably after the new year.
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.
Logged in states are a must have.
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.
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!
EDIT: --headless is under kHeadless https://sourcegraph.com/search?q=context:global+repo:chromiu...
I have concerned with any of the gallery items that advertise 'scraping' of Linkedin data. You might want to keep that on the down-low.
IMNAL but I'm pretty sure that's grounds for getting you shut down.
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.
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.)
Probably "Chrome" and "stealing data" I guess.
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.
These extensions are some well-known browser automation tools, each with > 100K users.
Did you look at them and decided to do something different?
- 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!
Nice job!
I’m also a user of your other Chrome app you developed (Intention) [1] - I’d recommend people try that out too (simple free app for productivity), it’s also so good.
Good luck with the launch!
[1] https://chrome.google.com/webstore/detail/intention-stop-min...
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.
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.
I just want to run some macros locally. Not interested in "cloud" anything unless its on a server that I control.
Questions/comments:
1. Will local functionality work without signup?
2. If so, then please consider a "Get Started" flow that makes this clear and does not require signup before giving any instruction/usage.
Question: Is there a technical reason for this, or you just want to insist that everyone create an account for some reason?
I do not see an obvious reason why macro recording and playback could not be performed purely locally. So I am skeptical that a server is needed, but always willing to learn and be astonished...
I would think that even if (big if) a server is needed, it could be done anonymously without need to collect email and create an account.
Anyway I am uninstalling the extension until such time as there is a local-only mode. too bad, from the demo it seems neat.
As a solo developer, I don't have the resources to support two versions of the product (one for users with accounts, one for users without) because it'd require maintaining multiple ways to save, load, and share flows.
Thanks!
Can you drive actions from a spreadsheet or table? The workflow I'm thinking of is first do a run to gather data, next offline filter or select desired items from that data set, then finally use the processed data set to drive a series of actions on the selected items.
Also, any chance there'll be a Firefox version?
Here's a demo showing it in action: https://docs.browserflow.app/tutorials/tutorial-scrape-a-lis...
(The demo shows scraping each URL but you can perform arbitrary actions for each row of the sheet.)
As for Firefox, it's unfortunately not currently possible: https://news.ycombinator.com/item?id=29256938
Interesting about Firefox vs Chrome API differences...
BTW, those are very nice demos too - clear and concise.
This reminds me fondly of using Vimperator macros and link hints to automate tasks back in 2007. It has always surprised me that the most widely-used UI paradigm lacks a standard way to automate tasks - we all spend so much of our lives clicking links, it seems insane that there isn't more/standard tooling for automating that.
I know, right? HTML is the ultimate API and I also found it strange that there aren't tools around helping people work with it more effectively. Hence Browserflow!
We are building similar tool at TexAu and would love to catch-up with you sometime this or next week!
@iamvikeshtiwari on Twitter
[1] https://twitter.com/JecelynYeen/status/1458089611004162060
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.
hence why it's nice to have that extension to click through the UI rather than figure out how to parse things no?
If the user is logged in, that data may not be publicly available, and the EULA would still apply.
https://www.merriam-webster.com/dictionary/irregardless
I dislike that word more than I dislike "nucular". Like diarrhea, anyone can let it slip.
Radicated?
;)
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.
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?
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.
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.
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'm excited to see if this will remain available long-term or websites will try to figure out ways to block it, and the limit to data scraping from one script, for example if a twitter account had 1 mil followers could it do all of them in day. I'm going to try it out!
Of course, that doesn't stop websites from rate limiting you if you try to do too much too quickly. In general, I'd recommend being conservative and automating what you think a normal person would be capable of doing manually.
Can't schedule locally either, only in the cloud.
Any idea how to debug?
Link to the Discord is here: https://docs.browserflow.app/
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!
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.
The reason for having limitations for local automations is a business one, not a technical one. I like the idea of scaling the price based on how much value Browserflow provides (if it saves someone hours of work, paying less than 20 bucks should be a no-brainer) so that's why there are runtime limits by plan.
But I believe in paying for value, and the value of the software should be covered by a one-time payment, as is the case with purchasing any other product. Continuing to demand payment without providing additional value—a service, computing resources—is not reasonable or appropriate, and I can’t support that business model.
FWIW, I did consider the one-time payment and upgrade model, but it's not possible for Chrome extensions because the distribution is controlled by Google and all users are automatically upgraded to the latest version.
Cheers!
Do you have any plans to port it to also run on Firefox?
If you're running the flow locally, you can put in a local path. If you want to run it in the cloud, you'll need to first download the file and then upload it.
I'm using React for the Javascript!
I saw you can save to CSV, can it save to other file formats?
Browserflow saves to Google Sheets which can be converted to other file formats as needed using other tools.
This is wonderful! It could save us from having to hire an administrative assistant to do manual scraping.
Feel free to email me at dk@browserflow.app to discuss your use case.
You'll save me from arthritis and carpal tunnel
I will no longer write some pretty gnarly jQuery in console to do the same thing.
If you run the flow in the cloud, you can log into a site by adding your cookies to the cloud flow.
In terms of technical challenges, the biggest one by far has been creating flows that are reliable over time. Sites change all the time so having automation that's reliant on HTML structure, CSS classes, or pieces of text is inevitably going to be brittle, but I want to minimize how often flows break. Browserflow aims to generate flows that will remain stable for as long as possible, but there's certainly a lot of room for improvement.
Wrote more about it in this comment here: https://news.ycombinator.com/item?id=29256076
"Save time by automating repetitive tasks in your own browser or in the cloud." My own browser? Our shop uses Firefox because we don't support Google's anti-competitive behavior or their support of Chinese ethnic cleansing.
"Web automation for everyone" Sure, except for the people you exclude from your club for not using Chrome and suckling Google's communist teat.