Use case

Proxies for World Monitor: the block list belongs to your host

Why some World Monitor panels stay empty: every feed is fetched server side, and which sources refuse you depends on the address range you host on.

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

World Monitor pulls news, alerts and institutional feeds into one dashboard. Your browser never touches those sources. The server fetches every feed and hands you the result, so the address each source sees is the server's, and that is where the interesting part lives. We read release v2.10.0 on 20 September 2026 and then measured its claims from our own machine.

The list in the code

The feed handler carries a hard-coded set with a comment:

Domains that consistently block Vercel edge IPs

The rest of that comment says to skip the direct attempt for them and go straight to the relay, to avoid spending an invocation on a timeout.

Seventeen hosts are named. Four of them are public institutions: who.int, news.un.org, cisa.gov and iaea.org. The rest are news organisations and research bodies, from CNN and SCMP to the Moscow Times, the Kyiv Independent and the Atlantic Council.

This is a production list, maintained by someone with nothing to sell, of sources that refuse one hosting platform. It is the plainest evidence we have seen that the address matters, and it raises an obvious question that nobody seems to have asked.

What our own server got

Does that list describe hosting in general, or one platform's address ranges?

We took the ten hosts whose feed URLs are configured in the same release and asked each one from our own server, a Contabo machine in AS51167. The request copies the project's own headers and its twelve second timeout. Nothing else differs.

SourceAnswer to our server
Defense News200, a feed, 145,978 bytes
UN News200, a feed, 33,650 bytes
IAEA200, a feed, 10,910 bytes
WHO200, a feed, 140,955 bytes
Crisis Group200, a feed, 8,140 bytes
SCMP200, a feed, 83,898 bytes
The Moscow Times200, a feed, 31,637 bytes
Atlantic Council200, a feed, 167,899 bytes
CISA403, Access Denied
Island Times403, a browser check

Eight of ten answered normally. Two refused.

Then we asked three feeds the project fetches directly, because they are not on the list. France 24 and TechCrunch answered. feeds.news24.com handed our server a challenge page.

So the list is real and it is not transferable. That project's platform is refused by seventeen sources. Our server is refused by two of them, and by one that they consider fine. A block list is a property of an address range, not of hosting as a category.

That is worth saying plainly, because the usual advice in this corner of the internet is that datacenter addresses get blocked and residential ones do not. The truer version is narrower. Some ranges are on some lists. Which lists you are on depends on where you host, and you can find out in an afternoon.

Which refusals an address fixes

The last row comes from their own build file. The relay container installs one extra package with this reason: Node's JA3 fingerprint is blocked by Akamai, and curl passes. One of their sources was not refusing the address at all. It was refusing the handshake, and the fix was a different client from the same machine.

We covered the same effect on our yfinance page, where the library imitates a browser handshake on purpose. If that is what you are meeting, no proxy will help, and a proxy that terminates TLS will make it worse.

Where an address can change

There are three places a feed request can come from, and only one of them is configurable:

Where the fetch happensWhat it changes
The edge functionthe default, uses the platform's addresses
The relay hosta different address, set with WS_RELAY_URL
A search indexfor three blocked sources the feed is a Google News search instead

The function that fetches feeds declares an edge runtime. There is no Node process there to hand a proxy agent to, so the familiar environment variables are not the lever. The lever is which host performs the fetch.

That makes the relay the place where a proxy belongs. It is a plain container, built on a current Node, so it can carry an ordinary proxy configuration. And it is worth knowing what happens without it: with WS_RELAY_URL unset, the relay address is null and the seventeen relay-only sources throw immediately. Those panels stay empty no matter how good your address is.

Which proxy type fits it?

First, measure. Ask the sources you care about from the machine you host on, the way we did above, and see how many actually refuse you. For most feeds the answer will be none, and the cheapest fix is no fix.

For the ones that do refuse, residential is the type that changes the answer. Our own paired test is the size of that effect: 4 of 13 answers changed between a server address and a residential one.

Feeds are the cheapest traffic there is. The largest document in our measurement was 167,899 bytes and most were a tenth of that, so a per gigabyte line goes a very long way here. Put the line on the relay host rather than on the application, and consider an allowed address so no password sits in that container's environment: on a Residential Premium plan your machine's address can be allowed, up to 150 per plan. The residential proxies page lists the plans, and the plan API manages allowed addresses from code.

What breaks

  • A few panels are always empty. Check whether those sources are on the relay-only list and whether you configured a relay at all.
  • Every relay-only source fails at once. WS_RELAY_URL is unset, so there is no second host to ask.
  • A source returns 403 with an Access Denied page. Your range is on its list. A different address is the fix.
  • A source returns a browser check. That is a challenge, not a block list, and an address alone may not clear it.
  • A source refuses the runtime but answers curl. The handshake is the problem. Change the client, not the address.

What this page does not cover

We read the release as text and did not run the dashboard. Our feed measurement is one request per host from one hosting address on one morning, not a study: a source that answered may refuse an hour later, and one that refused may have been having a bad day. We could test ten of the seventeen hosts, because the others have no direct feed URL in the release we read. We did not test a residential address against these feeds, so the paired numbers above come from our earlier sixteen URL test and are not extrapolated here. This project pushes daily and the release we read was twelve days old. We will read the list again and repeat the measurement by 20 October 2026.

Where to go from here

Proxies for last30days covers another research tool that reads news sources, and the runtime version that decides whether a proxy variable reaches half of it. Proxies for yfinance covers the handshake problem in detail, including why a proxy that inspects TLS makes it worse. Proxies for SearXNG covers what happens when the sources are search engines rather than feeds.

Sources

  • The relay-only domain set and its comment, the feed handler with its allowlist, redirect check and browser headers, and the relay helper that reads WS_RELAY_URL (api/rss-proxy.js, api/_relay.js). The relay container and its note about the TLS fingerprint (Dockerfile.relay). The three sources read through a search feed (src/config/feeds.ts). koala73/worldmonitor, release v2.10.0 of 8 September 2026, read 20 September 2026.
  • Our own measurement of 20 September 2026: ten relay-only feeds plus three comparison feeds, one request each from 169.58.183.155, with the project's own headers and timeout. Script and raw output are 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

Why are some World Monitor panels empty and others fine?
Every feed is fetched by the server, so each source answers your server's address. The project keeps a list of seventeen sources that refuse the addresses of the platform it runs on, and those are fetched from a second host instead.
Do news feeds really block server addresses?
Some do. We asked ten of the sources on that list from our own server and eight answered normally with a real feed. A block list belongs to one address range rather than to hosting in general.
Where do I set a proxy in World Monitor?
Not in an environment variable. The function that fetches feeds runs on an edge runtime, so the way to change the address is to let the relay host do the fetching, and to configure that relay with WS_RELAY_URL.
What happens if I never configure a relay?
The seventeen sources on the relay-only list have no path at all and the request throws, whatever address you are on.
Will a proxy fix every refusal?
No. Their own relay container installs curl because one source refuses the runtime's TLS fingerprint and accepts curl from the same machine. When the handshake is refused, a different address changes nothing.

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