# Automating a website with Node-RED (login, clicks, download)

**URL:** <https://discourse.nodered.org/t/automating-a-website-with-node-red-login-clicks-download/100519>\
**Category:** General\
**Created:** [8 March 2026 14:50 UTC](https://discourse.nodered.org/t/automating-a-website-with-node-red-login-clicks-download/100519 "2026-03-08T14:50:07Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![madmax](https://avatars.discourse-cdn.com/v4/letter/m/8baadc/32.png) [@madmax](https://discourse.nodered.org/u/madmax)\
**Post date:** [8 March 2026 14:50 UTC](https://discourse.nodered.org/t/automating-a-website-with-node-red-login-clicks-download/100519/1 "2026-03-08T14:50:07Z")

</div>

Hello everyone,

I have a question about **Node-RED** and hope someone can help me.

I would like to automate the interaction with a website. Specifically, I want to perform the following steps:

1. Open a website
2. Enter a username and password
3. Click the “Login” button
4. Scroll or navigate on the page
5. Download a file

My question is: **Is it possible to perform these actions using Node-RED?**  
If yes, which nodes or methods would you recommend for this?

I have already worked a bit with HTTP requests, but I am not sure how to properly handle login, button clicks, scrolling, and file downloads.

Thank you very much for your help!

---

<div class="post-metadata">

**Author:** ![AllanOricil](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/allanoricil/32/106911_2.png) [@AllanOricil](https://discourse.nodered.org/u/AllanOricil)\
**Post date:** [8 March 2026 17:40 UTC](https://discourse.nodered.org/t/automating-a-website-with-node-red-login-clicks-download/100519/2 "2026-03-08T17:40:38Z")

</div>

Yes. There are some puppeteer nodes out there.

---

<div class="post-metadata">

**Author:** ![omrid](https://avatars.discourse-cdn.com/v4/letter/o/77aa72/32.png) [@omrid](https://discourse.nodered.org/u/omrid)\
**Post date:** [8 March 2026 22:45 UTC](https://discourse.nodered.org/t/automating-a-website-with-node-red-login-clicks-download/100519/3 "2026-03-08T22:45:55Z")

</div>

What you describe seems more like RPA (Robotic Process Automation), and there are quite a few tools which allow you to record & replay logical sequences of data input, mouse clicks etc.  
Node-red is more for automating the "essence" of the operation, rather than being a dumb robot which just scrapes screens & presses buttons.  
The rule of thumb is to use RPA when there are no available APIs or access to data. Use RPA for legacy systems, or where the sequences are rigid and don't change much

---

<div class="post-metadata">

**Author:** ![bakman2](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bakman2/32/6207_2.png) [@bakman2](https://discourse.nodered.org/u/bakman2)\
**Post date:** [9 March 2026 07:25 UTC](https://discourse.nodered.org/t/automating-a-website-with-node-red-login-clicks-download/100519/4 "2026-03-09T07:25:28Z")

</div>

Depending on the login (nowadays login is more complex than the http request node is most likely to be able to handle due to security), puppeteer may be the 'easiest' approach, see [this example how to do it using a function node](https://discourse.nodered.org/t/puppeteer-chromium-help/94979/11). (there are nodes for node-red available but those either don't work most of the time, or are outdated).

---

<div class="post-metadata">

**Author:** ![madmax](https://avatars.discourse-cdn.com/v4/letter/m/8baadc/32.png) [@madmax](https://discourse.nodered.org/u/madmax)\
**Post date:** [9 March 2026 11:33 UTC](https://discourse.nodered.org/t/automating-a-website-with-node-red-login-clicks-download/100519/5 "2026-03-09T11:33:17Z")

</div>

Hello!

Thank you for your reply.

What do I need to install? And can Node-RED run in a Docker container, or does it require a full operating system?

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [9 March 2026 11:51 UTC](https://discourse.nodered.org/t/automating-a-website-with-node-red-login-clicks-download/100519/6 "2026-03-09T11:51:28Z")

</div>

> [@madmax](#):
>
> And can Node-RED run in a Docker container

> **[Running under Docker : Node-RED](https://nodered.org/docs/getting-started/docker)**

However, since this proposed solution (puppeteer via function node) will essentially fire up a headless browser, there may be components not available inside a bare/basic image. You would need to try it out.

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [9 March 2026 11:57 UTC](https://discourse.nodered.org/t/automating-a-website-with-node-red-login-clicks-download/100519/7 "2026-03-09T11:57:47Z")

</div>

I realise this all totally depends on the auth and how the file is generated/served but using the standard HTTP Request node would be my first approach (long before puppeteer/headless browser).

In simple terms:

- login (get token/cookie/whatever)
- http request the file to download (and include the token/cookie/whatever in headers)

---

<div class="post-metadata">

**Author:** ![madmax](https://avatars.discourse-cdn.com/v4/letter/m/8baadc/32.png) [@madmax](https://discourse.nodered.org/u/madmax)\
**Post date:** [9 March 2026 12:04 UTC](https://discourse.nodered.org/t/automating-a-website-with-node-red-login-clicks-download/100519/8 "2026-03-09T12:04:21Z")

</div>

OK.

Do you have an example?

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [9 March 2026 12:14 UTC](https://discourse.nodered.org/t/automating-a-website-with-node-red-login-clicks-download/100519/9 "2026-03-09T12:14:58Z")

</div>

It is impossible for me to know the auth type, the structure of the file download page or if the file is even served as a resource (or generated in script).

You need to understand what is actually happening.

You can achieve this by:

- open your browser, open the devtools and switch to the **Network** panel
- navigate to the page
- log in
  - see what headers are added/returned

- download a file
  - see if the file appears as an entry in the network panel
  - grab its URL
  - inspect the headers sent with this request

In Node-RED

- try the file URL it in a simple flow **inject** -\> **http request** (set URL to file URL) --\> **debug**
- try adding any headers to the http request (those inspected on the file download test in your browser)

Once you manage to do this manually, you can automate the steps. e.g. suppose the login makes a POST with user/pass and the result is a particular cookie you need to include in every request, then you would perform the login, store the cookie, apply the cookie, download the file.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [7 June 2026 12:15 UTC](https://discourse.nodered.org/t/automating-a-website-with-node-red-login-clicks-download/100519/10 "2026-06-07T12:15:17Z")

</div>

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.
