Captchas¶
Haul handles three kinds of captchas.
| Kind | Who solves it |
|---|---|
| Simple text captchas of XFileSharing sites | Haul reads them itself |
Image captchas (XFileSharing /captchas/…) |
You type the text in Haul's banner, no browser extension needed |
| reCaptcha, hCaptcha, Cloudflare Turnstile | You, in your browser, with the userscript |
The userscript¶
reCaptcha, hCaptcha and Turnstile only work on the hoster's own page. Haul lets you solve them in your browser on that page and takes the answer:
- Install Tampermonkey or Violentmonkey.
Chrome, Edge, Brave and other Chromium browsers run userscripts only after you allow it:
open the extension's details (chrome://extensions → Details) and turn on
Allow user scripts. In older versions (before Chrome 138) there is no such switch; turn on
Developer mode at the top right of chrome://extensions instead. Without it the userscript
is installed but never runs: Solve opens the full hoster page, and Haul gets no answer.
Firefox needs nothing of this.
2. In Haul, open Settings → Captchas and install the userscript haul-captcha.user.js from there.
3. When a captcha is waiting, a banner appears at the top of Haul, and in the tab title. Turn on the
browser notification in the same settings to be told when Haul is in the background.
4. Solve opens the hoster page. The userscript shows only the captcha there and sends the answer to
Haul. The download continues by itself; you can close the tab.
A captcha waits 10 minutes for you. Without an answer, Haul tries again 30 minutes later.
Security¶
The userscript only acts when Haul opens a page with a task in the #… part of the URL. That part is
never sent to the hoster. The task carries a one-time secret, so the answer only reaches the download
that asked for it.
The same mechanism solves captchas on login pages, for example ddownload's Turnstile, so you do not need
to enter the xfss cookie there.
For plugin authors¶
const token = await ctx.captcha.solve({ kind: 'turnstile', siteKey, pageUrl });
const text = await ctx.captcha.solve({ kind: 'image', imageUrl, pageUrl });
kind is recaptcha, hcaptcha, turnstile or image. The XFileSharing base finds and solves
captchas in its forms by itself. See Plugins.