node:internal/modules/run_main:123
triggerUncaughtException(
^
HTTPError: Response code 403 (Forbidden)
at Request.<anonymous> (/home/.../node_modules/.pnpm/got@11.8.6/node_modules/got/dist/source/as-promise/index.js:118:42)
at process.processTicksAndRejections (node:internal/process/task_queues:105:5) {
code: 'ERR_NON_2XX_3XX_RESPONSE',
timings: {
start: 1780348692928,
socket: 1780348692930,
lookup: 1780348692931,
connect: 1780348692972,
secureConnect: 1780348693032,
upload: 1780348693032,
response: 1780348693083,
end: 1780348693087,
error: undefined,
abort: undefined,
phases: {
wait: 2,
dns: 1,
tcp: 41,
tls: 60,
request: 0,
firstByte: 51,
download: 4,
total: 159
}
}
}
Node.js v22.22.0
FurAffinity recently started aggressively using Cloudflare’s bullshit turnstiles so I am unsure if this even has a fix. Attempting to fetch a submission even with login cookies and real-looking UA with cURL failed like so:
* Request completely sent off
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [230 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [230 bytes data]
< HTTP/2 403
< date: Mon, 01 Jun 2026 22:18:52 GMT
< content-type: text/html; charset=UTF-8
< content-length: 5729
< accept-ch: Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA
< cf-mitigated: challenge
< content-security-policy: default-src 'none'; script-src 'nonce-LvTJAEA3zPgdZF4ZRQSNt4' 'unsafe-eval' https://challenges.cloudflare.com; script-src-attr 'none'; style-src 'unsafe-inline'; img-src 'self' https://challenges.cloudflare.com; connect-src 'self' https://challenges.cloudflare.com; frame-src 'self' https://challenges.cloudflare.com blob:; child-src 'self' https://challenges.cloudflare.com blob:; worker-src blob:; form-action http: https:; base-uri 'self'
< server: cloudflare
< critical-ch: Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA
< cross-origin-embedder-policy: require-corp
< cross-origin-opener-policy: same-origin
< cross-origin-resource-policy: same-origin
< origin-agent-cluster: ?1
< permissions-policy: accelerometer=(),browsing-topics=(),camera=(),clipboard-read=(),clipboard-write=(),geolocation=(),gyroscope=(),hid=(),interest-cohort=(),magnetometer=(),microphone=(),payment=(),publickey-credentials-get=(),screen-wake-lock=(),serial=(),sync-xhr=(),usb=(),xr-spatial-tracking=(self)
< referrer-policy: same-origin
< server-timing: chlray;desc="a05198bd08e42942"
< x-content-type-options: nosniff
< x-frame-options: SAMEORIGIN
< cf-ray: a05198bd08e42942-VIE
<
{ [5 bytes data]
100 5729 100 5729 0 0 21719 0 --:--:-- --:--:-- --:--:-- 21700
* Connection #0 to host www.furaffinity.net left intact
curl: (22) The requested URL returned error: 403
This library now appears completely dysfunctional:
FurAffinity recently started aggressively using Cloudflare’s bullshit turnstiles so I am unsure if this even has a fix. Attempting to fetch a submission even with login cookies and real-looking UA with cURL failed like so: