Use case

Proxies for last30days: which of its lanes your setting reaches

Route last30days through a proxy: the Python sources obey the variables, the X lane needs a newer Node runtime, and two lanes never use your address.

HProxy Team··Updated September 20, 2026·7 min read
HProxy.Use case

Free proxies won't hold up here.

Shared datacenter IPs get flagged and dropped fast. When it has to hold, gaming, streaming, accounts, you need mobile and residential IPs that read as a real device, from $0.44/GB, pay as you go.

Proxies for AI Agents

The last30days skill reads Reddit, X, Hacker News, YouTube, Polymarket and the open web, then writes one grounded summary. Six sources, one run, and four different network lanes underneath. Setting a proxy variable reaches some of them. We read release v3.25.0 on 20 September 2026 and measured the lane that surprised us.

Four lanes, one setting

The Python half already obeys you

The project has no proxy setting. It does not need one for its own client.

Every Python source calls one shared module, and that module builds a single opener:

_opener = urllib.request.build_opener(_StripAuthOnCrossOriginRedirect)

The word proxy does not appear in that file. It does not have to. CPython's build_opener installs a proxy handler by default, and only drops a default when one of your own handlers replaces it. The handler passed here is a redirect handler, so the proxy handler stays. It then calls getproxies, which reads the environment and, on Windows, falls back to the system settings.

So HTTPS_PROXY routes Reddit, Hacker News and the page reads, without anyone writing a line for it.

The X lane needs a newer runtime

X is not read by that client. It runs in a separate Node process, and the project passes it a fixed list of environment variables. That list is careful. It carries both spellings of all three proxy variables, and it carries NODE_USE_ENV_PROXY as well.

That last one is the point. A Node runtime does not read the proxy variables by default. We tested it on this machine: we pointed the variables at a port where our own listener was waiting, then ran a child that calls fetch. Our listener received nothing, twice, and the request went straight out to the internet. With the flag and without it.

Node's own documentation explains why. The flag was added in 22.21.0 and 24.5.0. The runtime we measured is 22.19.0, just below the first of those. Our own production server runs 20.20.2, also below.

Your Node versionWhat the proxy variables do
Below 22.21.0nothing, the X lane goes direct
22.21.0 or newer on the 22 lineread, once NODE_USE_ENV_PROXY is set
24.5.0 or newerread, once NODE_USE_ENV_PROXY is set

Check node -v before you conclude your proxy is broken. On an older runtime the Python sources will be routed and X will not, in the same run, from the same shell.

Two children, two allowlists

The second child process is a different story, and a deliberate one. It keeps five variables:

keep = ("PATH", "LANG", "LC_ALL", "TMPDIR", "SystemRoot")

No proxy variable, by design. That child runs with its permissions bypassed while its input is filled with text pulled off X, which is text a stranger wrote. The project strips the environment down to almost nothing and gives the child its own home directory. We would make the same trade. It does mean that lane can never use your address.

The lanes that are never yours

Two more places where an address does not do what people expect.

The keyless page reader is the floor tier for turning a URL into text. It sends the target URL to a hosted reader and that service fetches the page. Your line carries one short request. The site sees the reader, not you. Their own code says so plainly, warning that the target URL is sent to a third party and that the free tier returns cached snapshots. We wrote about that service's own proxy headers on our Jina Reader page, and the short version is that the free anonymous lane is the most rate limited one it has.

The live browser is a cookie source. It connects to a Chrome that is already running with debugging enabled and reads the X session pair. It does not fetch research pages. A proxy on that browser changes nothing about where the research traffic comes from.

There is also an optional paid source that shells out to a vendor's own command line tool. That tool logs in by itself and runs on the vendor's machines, so your address is not involved there either.

Where the address runs out

Reddit is the first source to push back, and the code documents exactly how.

An anonymous 429 from Reddit's search and feed endpoints arrives with x-ratelimit-reset and no Retry-After at all. The project reads both headers, which is right, because reading only the standard one means backing off three, five and nine seconds against a window that wants forty two. Their own comment puts it well: each retry meets another 429, the budget drains, and the source is reported dead when it was merely early.

The wait is capped at sixty seconds. Reddit's reset can say five hundred and forty. Past the cap the tool stops waiting and the source fails.

That is a clean argument for a second address rather than a better retry. The retry logic is already correct. What it runs out of is windows, and a window belongs to an address.

Which proxy type fits it?

Residential, for the sources that treat a hosting address differently. Our own test is the size of that effect: 4 of 13 answers changed between a server address and a residential one, with plain requests of exactly the kind this tool sends.

Two notes for this skill. It reads text, not media, so a per gigabyte line goes a long way: search endpoints, feeds and markdown page reads are small. And on a server an allowed address is simpler than a login in the environment, because there is nothing to leak into a child process: on a Residential Premium plan your machine's address can be allowed, up to 150 per plan.

One honest limit. Every request carries a user agent that names the tool. That is the right default, and it means a site refusing this client by name will refuse it from any address you buy. A proxy buys you windows and geography, not anonymity. The residential proxies page lists the plans, and the plan API manages allowed addresses from code.

What breaks

  • Some sources are routed and X is not. Check node -v. Below 22.21.0 that lane has no proxy support to switch on.
  • You set the flag and nothing changed. The flag needs the runtime as well. It does nothing on its own.
  • A page read shows somebody else's address. That is the keyless tier. A hosted reader fetched the page.
  • Reddit comes back empty after a minute. The reset window was longer than the cap, so the source failed rather than waiting.
  • A proxy on your browser makes no difference. The browser is read for a cookie, not used for fetching.

What this page does not cover

We read the release as text and did not run the skill, so we did not watch a run use an address and did not measure a run's traffic. Our Node result is from one machine and one runtime version, not from inside the tool. We read the shared client, both child launchers, the keyless reader, the browser cookie reader and two source modules closely, and checked the remaining source modules only for which client they import. We did not establish what the optional vendor tool does with an address of its own. This project ships about once a week and the release we read was two days old, so check your version. We will read it again by 20 October 2026.

Where to go from here

Proxies for Jina Reader covers the hosted reader behind the keyless tier, including the two headers it accepts. Proxies for Hermes Agent covers another research agent with several network paths and one variable that moves only some of them. Proxies for TradingAgents covers what to do when a data source has no proxy setting at all.

Sources

  • The shared client, its opener, its user agent and its rate limit handling (skills/last30days/scripts/lib/http.py), the X child and its environment list (bird_x.py), the second child and its five variables (grok_x.py), the keyless page reader (web_fetch_keyless.py), the browser cookie reader (chrome_cdp.py) and the optional vendor source (brightdata.py). mvanhorn/last30days-skill, release v3.25.0 of 18 September 2026, read 20 September 2026.
  • What build_opener installs by default and what getproxies reads. CPython 3.13.7, Lib/urllib/request.py, read out of the Python installed here on 20 September 2026.
  • The version the proxy flag was added in, and what it does. Node.js CLI documentation, nodejs.org/api/cli.html, fetched 20 September 2026.
  • Our own measurement of a Node child with the proxy variables set, 20 September 2026, kept in the research folder of this page.
  • Our paired address test of 19 September 2026: 16 URLs, plain requests, two runs from our server and two through a residential line of our house plan. Raw output is kept in the research folder of our OpenClaw page.
  • Plans, allowed addresses and per gigabyte pricing. HProxy documentation, hproxy.com/docs, 20 September 2026.

Frequently asked questions

Does last30days have a proxy setting?
No, and its Python half does not need one. Its shared client is built the standard way, so it reads HTTP_PROXY, HTTPS_PROXY and NO_PROXY on its own.
Why is the X source still going direct?
That source runs in a separate Node process. A Node runtime ignores the proxy variables unless it is version 22.21.0 or 24.5.0 and newer and the flag NODE_USE_ENV_PROXY is set.
Which lanes never use my address?
The second child process, which is given five environment variables and none of them a proxy, and the keyless page reader, where a hosted service fetches the page for you.
Why does Reddit come back empty?
Reddit answers an anonymous 429 with a reset window rather than the standard retry header, and the window can be minutes. The tool refuses to wait longer than a minute and reports the source as failed.
Does a proxy on my browser help?
No. The browser is read for a session cookie over the debugging protocol. It does not fetch research pages, so its address is never the one a site sees.

Proxies that don't die mid-job

Residential, ISP, datacenter and mobile, verified by the same engine that runs tens of millions of checks. They read as a real device and hold up under load. Pay as you go, and your balance never expires. $0.44/GB is the 2,000 GB+ rate; a single gigabyte is $0.50/GB, with no minimum order.

129M+ proxy checks run · 100+ countries · HTTP / HTTPS / SOCKS · re-checked every few minutes · no signup

HProxy.

Honest guides and comparisons on proxies, scraping and staying unblocked, from the team that runs the network.

RSS feed