Symfony Messenger can run a CAPTCHA queue on Windows with one SQLite file, but the obvious retry exception ignores max_retries and Ctrl+C kills the worker mid-solve. Here is a handler that solves reCAPTCHA with CapSkip, retries with the right exception and skips a login it already finished.
Windows Task Scheduler рдЬреЙрдм рдореЗрдВ рдХреИрдкреНрдЪрд╛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ
One hung CAPTCHA solve can silently stop a Windows Task Scheduler schedule for three days. Here is a Python job that solves reCAPTCHA with CapSkip, retries in the script and registers a task that a hung run cannot block.
APScheduler рдореЗрдВ рдмрд┐рдирд╛ рд╕реНрдХрд┐рдк рд╣реБрдП рд░рди рдХреЗ рдХреИрдкреНрдЪрд╛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ
APScheduler рдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдПрдХ рдЕрдЯрдХреЗ рд╣реБрдП рдХреИрдкреНрдЪрд╛ рд╣рд▓ рдХреА рд╡рдЬрд╣ рд╕реЗ рдмрд╛рдж рдХреЗ рд╕рднреА рд░рди рд╕реНрдХрд┐рдк рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рд╕реЗрдХрдВрдб рд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рджреЗрд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд░рди рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ interval рдЬреЙрдм рд╣реИ рдЬреЛ CapSkip рд╕реЗ reCAPTCHA рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, SDK рдХреЛ timeout рджреЗрддрд╛ рд╣реИ рдФрд░ рдЕрдкрдирд╛ рд╢реЗрдбреНрдпреВрд▓ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИред
Windows рдкрд░ SQLite рдХреЗ рд╕рд╛рде Huey рдЯрд╛рд╕реНрдХ рдореЗрдВ рдХреИрдкреНрдЪрд╛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ
Huey Windows рдкрд░ рдПрдХ SQLite рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдФрд░ рдмрд┐рдирд╛ Redis рдХреЗ рдЪрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдереНрд░реЗрдб рд╡рд░реНрдХрд░ рдкрд░ рдЙрд╕рдХрд╛ timeout рдСрдкреНрд╢рди рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛, рдФрд░ CancelExecution рддрдм рднреА рд░реАрдЯреНрд░рд╛рдИ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЖрдк рд░реЛрдХрдирд╛ рдЪрд╛рд╣рддреЗ рдереЗред рдпрд╣рд╛рдБ рдПрдХ Huey рдЯрд╛рд╕реНрдХ рд╣реИ рдЬреЛ CapSkip рд╕реЗ reCAPTCHA рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣рд░ рдирддреАрдЬрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИред
CefSharp OffScreen console рдРрдк рдореЗрдВ reCAPTCHA рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ
navigation рдХреЗ рдареАрдХ рдмрд╛рдж рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ EvaluateScriptAsync рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░ CefSharp exception рдлреЗрдВрдХрддрд╛ рд╣реИ, рдФрд░ async Main рдЙрд╕рдХрд╛ Shutdown рдирд┐рдпрдо рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдмрд┐рдирд╛ рд╡рд┐рдВрдбреЛ рд╡рд╛рд▓рд╛ CefSharp рдРрдк рд╣реИ рдЬреЛ sitekey рдкрдврд╝рддрд╛ рд╣реИ, CapSkip рд╕реЗ reCAPTCHA рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлреЙрд░реНрдо рд╕рдмрдорд┐рдЯ рдХрд░рддрд╛ рд╣реИред
C# рд╕реЗ WebView2 рдореЗрдВ reCAPTCHA рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ (WinForms, WPF)
ConfigureAwait(false) рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд╛ рдЗрдВрддрдЬрд╝рд╛рд░ рдХрд░рдиреЗ рдкрд░ рдЕрдЧрд▓реА WebView2 рдХреЙрд▓ exception рдлреЗрдВрдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ CoreWebView2 рд╕рд┐рд░реНрдлрд╝ UI рдереНрд░реЗрдб рдкрд░ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ WinForms рдРрдк рд╣реИ рдЬреЛ sitekey рдкрдврд╝рддрд╛ рд╣реИ, CapSkip рд╕реЗ reCAPTCHA рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлреЙрд░реНрдо рд╕рдмрдорд┐рдЯ рдХрд░рддрд╛ рд╣реИ, invisible widgets рд╕рдореЗрддред
рд▓рдЧрд╛рддрд╛рд░ рдЪрд▓рддреА рд░рд╣рдиреЗ рд╡рд╛рд▓реА .NET Worker Service рдореЗрдВ рдХреИрдкреНрдЪрд╛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ
CapSkip рдХрд╛ рдПрдХ рднреА рдмрд┐рдирд╛ рдкрдХрдбрд╝рд╛ рдЧрдпрд╛ exception .NET BackgroundService рдХреЗ host рдХреЛ рд░реЛрдХ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░реЛрд╕реЗрд╕ code 0 рдХреЗ рд╕рд╛рде exit рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП Windows рд╕рд░реНрд╡рд┐рд╕ рдХреЛ рдХрднреА рджреЛрдмрд╛рд░рд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рддрд╛ред рдпрд╣рд╛рдБ рдПрдХ рд╡рд░реНрдХрд░ рд╣реИ рдЬреЛ CapSkip рд╕реЗ reCAPTCHA рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдЕрднреА рддрдХ рд╢реБрд░реВ рди рд╣реБрдП solver рдХреЛ рдЭреЗрд▓ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдлрд╝ рддрд░реАрдХреЗ рд╕реЗ рд░реБрдХрддрд╛ рд╣реИред
Symfony BrowserKit рдХреЗ рд╕рд╛рде PHP рдореЗрдВ Capy Puzzle рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ
Symfony рдХрд╛ HttpBrowser cookies рд░рдЦрддрд╛ рд╣реИ рдФрд░ Referer рднреЗрдЬрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕рдХрд╛ рдлреЙрд░реНрдо object рдЙрди рддреАрди capy_ рдлрд╝реАрд▓реНрдб рдХреЛ рдареБрдХрд░рд╛ рджреЗрддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ widget рдиреЗ рдХрднреА рд▓рд┐рдЦрд╛ рд╣реА рдирд╣реАрдВред рдпрд╣рд╛рдБ рд╡рд╣ PHP рдХреЛрдб рд╣реИ рдЬреЛ CapSkip рд╕реЗ Capy Puzzle рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬрд╡рд╛рдм рдХреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп request() рдХреЗ рдЬрд╝рд░рд┐рдП рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реИред
MechanicalSoup рдореЗрдВ reCAPTCHA рд╣рд▓ рдХрд░рдХреЗ рдлреЙрд░реНрдо рдХреИрд╕реЗ рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ
MechanicalSoup рдХрднреА widget рдХрд╛ JavaScript рдирд╣реАрдВ рдЪрд▓рд╛рддрд╛, рдЗрд╕рд▓рд┐рдП g-recaptcha-response рдлрд╝реАрд▓реНрдб рдлреЙрд░реНрдо рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрддрд╛, рдФрд░ рдЙрд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдкрд░ LinkNotFoundError рдЙрдарддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ CapSkip рд╕реЗ reCAPTCHA рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ, рдлрд╝реАрд▓реНрдб рдЦреБрдж рдХреИрд╕реЗ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдлреЙрд░реНрдо рдХреИрд╕реЗ рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ, invisible reCAPTCHA рдФрд░ v3 рд╕рдореЗрддред
PHP рдореЗрдВ Guzzle рдФрд░ cookie jar рд╕реЗ CaptchaFox рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ
Guzzle рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреЛрдИ cookie рдирд╣реАрдВ рд░рдЦрддрд╛, рдХреЛрдИ Referer рдирд╣реАрдВ рднреЗрдЬрддрд╛ рдФрд░ рдЦреБрдж рдХреЛ GuzzleHttp/8 рдмрддрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рд╡рдЬрд╣ рд╕реЗ рднреА CaptchaFox token рдареБрдХрд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╡рд╣ PHP рдХреЛрдб рд╣реИ рдЬреЛ CapSkip рд╕реЗ widget рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ token рдХреЛ рдЙрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рдкрд╣рдЪрд╛рди рдХреЗ рд╕рд╛рде рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ рдЙрд╕реЗ рдмрдирд╛рдпрд╛ рдерд╛ред










