Repository navigation
Keep one proxy exit for the whole run on a 2Captcha gateway - #20
Merged
Merged
Conversation
A gateway login with no -session- segment can be answered from a different residential address on each connection, so a results walk could replay page 1's cookies from another exit. When the proxy host is under .proxy.2captcha.com or .proxy.rucaptcha.com and the login names no session, the run now appends one random -session-<id>-sessTime-<N> (N from --proxy-session-minutes / VRBO_PROXY_SESSION_MINUTES, default 30, 0 = off), once, before the pre-check and the browser. A login that already names a session is left as given; with --proxy-file each gateway line gets its own id after de-duplication. The sidecar records proxy_session_pinned, never the id; Selenium records false because it cannot send a proxy login. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01CKsd7q25N19WzUZjrAdzx8
This was referenced Oct 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
VRBO_PROXYis a 2Captcha residential gateway login of the formACCOUNT-zone-custom-region-US, with no session segment. Such a login may be answered from a different residential address on each connection. A results walk is one browser session that turns pages with a button press, so page 3 could replay page 1's cookies from a different exit. The pagination canary's page-turn refusals have never been tested against a single, fixed exit.Resulting behaviour
.proxy.2captcha.comor.proxy.rucaptcha.comand the login names no-session-, the run appends one random-session-<12 alnum>-sessTime-<N>to the login. This happens once, before the pre-check and before any browser. Every request of the run then uses that login: the pre-check, page 1, the page turns and any relaunch.--proxy-session-minutes N(all three engines; alsoVRBO_PROXY_SESSION_MINUTES) sets N. The default is 30, and the accepted range is 0 to 120 (the IP-duration range the vendor's residential dashboard offers).0sends the login unchanged. Negative, over-range and non-numeric values exit 2 and name the flag. A bad environment value exits instead of falling back to the default.-sessTime-keeps its own duration and gains an id.--proxy-file, duplicates are dropped first, then each gateway line gets its own id. Rotation is still a new browser on another entry's own session. Entries never change after the pool is built, so the proxy under a live browser never changes.proxy_session_pinned: true/false. The id itself is never recorded, and the log masks the whole login. Selenium recordsfalsebecause it strips proxy credentials (it has no way to send them).Evidence
Offline suite,
PYTHONDONTWRITEBYTECODE=1, caches cleared between runs:No browsers were downloaded.
ci_checks.py --help-check --sample-check --secret-checkpassed.New group
test_proxy_sticky_session, 38 checks, covering:proxy_check.precheckstubbed, so no request leaves the machine);0= off, and the environment variable;Each engine is also driven through
scrape(), with the page fetch and the pre-check stubbed, on a gateway login and on a non-gateway proxy. Each assertsproxy_session_pinnedin<out>.meta.json, and that no session id appears in the sidecar or the log.Planted-fault controls. Each one turned the suite red on its named check, and the restored tree was green:
-sessTime-.true(red on the source check and on the driven run in the selenium venv).No paid calls and no proxy traffic were used for these checks.
Not changed
VRBO_PROXYthrough the environment, and with this change the walk runs on one sticky exit by default.--block-mediaand the 10 MB budget stay as merged in Fill results pages that stop at the grid's loading placeholders #19.🤖 Generated with Claude Code
https://claude.ai/code/session_01CKsd7q25N19WzUZjrAdzx8