[HN Gopher] Show HN: I made a Chrome extension that can automate... ___________________________________________________________________ Show HN: I made a Chrome extension that can automate any website Author : dkthehuman Score : 250 points Date : 2021-11-17 15:16 UTC (7 hours ago) (HTM) web link (browserflow.app) (TXT) w3m dump (browserflow.app) | anaskar wrote: | This is awesome. Congratulations on the launch. I can see a | number of use cases for Marketing, CS, and Sales orgs | agumonkey wrote: | Impressive work :) #jealous | fender256 wrote: | I would love it if this extension was made for Firefox! | dkthehuman wrote: | 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! | bspammer wrote: | 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. | sly010 wrote: | Congrats, the demos look awesome! Having struggled with something | like this in the past (for automated testing) I am always curious | about how various solutions represent the "program" so its long | term repeatable? | | 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? | dkthehuman wrote: | Browserflow is more low-code than it is no-code since it has | support for control flow statements like "If", "Else", etc. as | well as being able to execute arbitrary Javascript on the page. | The no-code approach of simply recording a flow works fine in | many cases, but there are a lot of escape hatches if the | flexibility is needed (e.g. waiting for an element to appear). | | 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. | toss1 wrote: | Excellent work; I started the demo with usual jaded attitude, but | then - WOW - nice - I'll have good uses for that! | | 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? | dkthehuman wrote: | You definitely can drive actions from a spreadsheet -- it's one | of the most common usage patterns. | | 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 | xeromal wrote: | So this is very specific, but I've been trying to automate | clearing my linked in messages for a while and I just tried | browserfow to no success. I tried using the selector and also | grabbing css paths off random elements. | | Any idea how to debug? | dkthehuman wrote: | Come to the #help channel in the Browserflow Discord and we can | work it out! | | Link to the Discord is here: https://docs.browserflow.app/ | catchmeifyoucan wrote: | 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. | dkthehuman wrote: | 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. | TavsiE9s wrote: | Why would I need to signup if I only ever want to run local | flows? | vxNsr wrote: | 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? | dkthehuman wrote: | 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! | tyingq wrote: | >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. | debdut wrote: | Damn dk! This is awesome I'm following you and browserflow | sometime. This post should be on top for days straight atleast | guys | dkthehuman wrote: | Thanks for following along -- I appreciate the support! | moritonal wrote: | 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. | kreeben wrote: | 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 | detuur wrote: | 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 | moritonal wrote: | 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. | wccrawford wrote: | "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. | countvonbalzac wrote: | Do you think this could be used for testing purposes as well, not | just scraping? | dkthehuman wrote: | It'll work, though it's not optimized for that use case. | | Wrote more about it in this comment here: | https://news.ycombinator.com/item?id=29256076 | defied wrote: | For testing purposes, you can achieve similar results with | Selenium IDE. You can export tests and upload these to (our | website) https://testingbot.com - supports screenshots and | scheduled runs. | geoka9 wrote: | Very nice! Just be careful, Twitter is pretty aggressive with | banning accounts that use automation. | butler14 wrote: | I've dabbled with lots of RPA software but never settled on one, | mostly due to poor UX or the need to write code. Will give this a | whirl! | mritchie712 wrote: | 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? | catchmeifyoucan wrote: | I think in the video, he was getting the original cookies from | the website, and reusing them in the cloud | dkthehuman wrote: | Thanks! Auth is handled when running in the cloud by adding the | relevant cookies to the cloud flow. | newman314 wrote: | I'm going to try using this to update certs on my Brother | printer. It is one of the few that I have been unable to | automate/hack together something for LE cert rotation. | jonshariat wrote: | 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. | ukd1 wrote: | 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/ | spython wrote: | Sikuli http://sikulix.com/ could perhaps be helpful. | RandomBookmarks wrote: | Sikuli is good for desktop automation. For browser automation | an extension based solution (such as this one) is easier to | use. | renatgabitov wrote: | 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. | dkthehuman wrote: | 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. | KennyBlanken wrote: | > and save them to Google Drive | | No, thank you. Please offer a local save option. | kyawzazaw wrote: | Do you think you would buy this if it does? Seems pricing | is high | dkthehuman wrote: | 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. | soperj wrote: | How much are you offering for this feature? | RandomBookmarks wrote: | Such a thing already exists. The ui.vision extension is | roughly the same, but it runs locally (no cloud): | | https://ui.vision/rpa/docs/selenium-ide/capturescreenshot | genev wrote: | How about a few lines of python with selenium? | kordlessagain wrote: | It's more than a few and less than a bushel. | WORMS_EAT_WORMS wrote: | This is excellent... Congrats and super useful! | | I will no longer write some pretty gnarly jQuery in console to do | the same thing. | cxr wrote: | Prior art: | | "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> | dxl32 wrote: | Congrats on the launch DK!!! | tyingq wrote: | 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. | dkthehuman wrote: | 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! | tyingq wrote: | 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. | mritchie712 wrote: | What type of app did you have in mind? | fragmede wrote: | automation/screenshotting of a bespoke internal ticketing | system (aka not-Jira), but without needing to have my | laptop on. | kaycebasques wrote: | Presumably using Chrome DevTools Protocol? Or maybe that new | Recorder panel stuff [1] in DevTools has unlocked some new | capabilities for Extensions? | | [1] https://twitter.com/JecelynYeen/status/1458089611004162060 | deedubaya wrote: | 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. | seoulmetro wrote: | 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. | eulercoder wrote: | Congratulations DK, this looks amazing! | | We are building similar tool at TexAu and would love to catch-up | with you sometime this or next week! | | @iamvikeshtiwari on Twitter | thih9 wrote: | 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? | dkthehuman wrote: | 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. | [deleted] | Cilvic wrote: | i recall that browser would soon make it harder for | extensions to grab cookies like that, does somebody know | more? | horsawlarway wrote: | 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. | weka wrote: | Beautiful UI. What's the framework -- React? Vue? Angular? | dkthehuman wrote: | 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! | mountainboy wrote: | hmm, I installed extension, clicked on "Get Started", allowed | permissions, and am then presented with a signup/signin page and | no way to skip it. | | 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. | mountainboy wrote: | hmm, I was going to experiment on this hackernews page, so I | clicked on Extensions->BrowserFlow and it opened a window with | a single button "Sign In". So it appears it does not work | locally at all. | | 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. | RandomBookmarks wrote: | 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? | dkthehuman wrote: | 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! | technobabbler wrote: | 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! | debdut wrote: | I've using iMacros, it's not as easy as this one | nzach wrote: | This looks really interesting! | | Do you have any plans to port it to also run on Firefox? | dkthehuman wrote: | 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. :'( | detaro wrote: | which APIs are those? | dkthehuman wrote: | https://developer.chrome.com/docs/extensions/reference/debu | g... | detaro wrote: | interesting, thanks! | capitainenemo wrote: | https://bugzilla.mozilla.org/show_bug.cgi?id=1316741 if | you want to vote for this. Has been stalled for a long | time. | mountainboy wrote: | like so many mozilla issues. | ghostbrainalpha wrote: | It's impressive. What's been the biggest challenge building it so | far? | slugiscool99 wrote: | Really great job with this. Definitely fills a need | gandalfff wrote: | 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! | dkthehuman wrote: | 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! | rafaelturk wrote: | Neat. Love it. | tmcneal wrote: | Congrats on the launch DK! It's awesome to see how polished | you've made this. | dkthehuman wrote: | 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! :) | hnrodey wrote: | This is so slick. I think I'll give it a try. Thanks! | renatgabitov wrote: | DK, congrats on the launch. You are onto something with data | extraction. I like that you allow to correct the selectors, so | that the data can be extracted more accurately, and typing. | | 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) | eulercoder wrote: | Hey Renat, | | 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 | skrowl wrote: | Sounds similar to Microsoft Power Automate, though Power Automate | works with browsers other than Chrome. | armchairhacker wrote: | that is a very well-made presentation, congrats | Drblessing wrote: | This is amazing! | | 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! | dkthehuman wrote: | One of the major benefits of Browserflow automating your normal | desktop browser (instead of creating a separate browser | instance) is that it's indistinguishable from you using the | site directly. | | 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. | mmmmkay wrote: | 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 | jokethrowaway wrote: | 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. | dkthehuman wrote: | 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.) | reeddavid wrote: | Looks great, I'll give it a try for my next scraping project. My | favorite of all these types of tools was kimonolabs | (http://kimonolabs.com) before they were acquired and shut down. | guerrilla wrote: | Cool. This reminds me of AppleScript. I miss those days. I'm | surprised GNOME still doesn't have something that easy. | asebold wrote: | Very helpful for automating hiding "topics" on Twitter! | renatgabitov wrote: | Can you please elaborate what you mean? ___________________________________________________________________ (page generated 2021-11-17 23:00 UTC)