Skip to content

fix(nextor): mantiene una sola IP residencial en toda la consulta - #11

Open
pachedev wants to merge 1 commit into
moraxh:mainfrom
pachedev:fix/nextor-single-residential-ip
Open

fix(nextor): mantiene una sola IP residencial en toda la consulta#11
pachedev wants to merge 1 commit into
moraxh:mainfrom
pachedev:fix/nextor-single-residential-ip

Conversation

@pachedev

Copy link
Copy Markdown

getResidentialProxyUrl() elige una entrada al azar de RESIDENTIAL_PROXIES en cada llamada, y getProxyAgent() se invocaba por separado para /iniciar y para /pre-check. El sessionId que emite la primera petición puede así presentarse desde una IP distinta en la segunda; contra un endpoint cuyo problema conocido es el rate limit por IP, es justo lo que no debe pasar. Con dos entradas configuradas, diez llamadas seguidas alternan entre ambas, de modo que alrededor de la mitad de las consultas parten la sesión.

Ahora se construye un ProxyAgent por consulta, se comparte entre las dos peticiones y se cierra en un finally. Eso ahorra un handshake TCP+TLS contra el proxy —facturado por GB— y permite fijar allowH2:false y keepAliveTimeout de 10s, los mismos valores del dispatcher global de instrumentation.ts: un dispatcher explícito se lo salta, así que los providers proxeados eran los únicos sin la protección contra sockets muertos que introdujo 153aedf.

Contra el endpoint real sin proxy, el código anterior y el nuevo devuelven lo mismo. El diff se revisa mejor con git diff -w: son 31 líneas de cambio real, el resto es reindentado por el try/finally.

freedompop.ts y talentonet/mvno.ts comparten el patrón de crear un agente por petición pero no el bug de sesión partida; se dejan fuera para no ampliar el alcance.

getResidentialProxyUrl() elige una entrada al azar de RESIDENTIAL_PROXIES
en cada llamada, y getProxyAgent() se invocaba por separado para /iniciar
y para /pre-check. El sessionId que emite la primera petición puede así
presentarse desde una IP distinta en la segunda; contra un endpoint cuyo
problema conocido es el rate limit por IP, es justo lo que no debe pasar.
Con dos entradas configuradas, diez llamadas seguidas alternan entre
ambas, de modo que alrededor de la mitad de las consultas parten la
sesión.

Ahora se construye un ProxyAgent por consulta, se comparte entre las dos
peticiones y se cierra en un finally. Eso ahorra un handshake TCP+TLS
contra el proxy —facturado por GB— y permite fijar allowH2:false y
keepAliveTimeout de 10s, los mismos valores del dispatcher global de
instrumentation.ts: un dispatcher explícito se lo salta, así que los
providers proxeados eran los únicos sin la protección contra sockets
muertos que introdujo 153aedf.

Contra el endpoint real sin proxy, el código anterior y el nuevo
devuelven lo mismo. El diff se revisa mejor con `git diff -w`: son 31
líneas de cambio real, el resto es reindentado por el try/finally.

freedompop.ts y talentonet/mvno.ts comparten el patrón de crear un agente
por petición pero no el bug de sesión partida; se dejan fuera para no
ampliar el alcance.
@vercel

vercel Bot commented Aug 31, 2026

Copy link
Copy Markdown

@pachedev is attempting to deploy a commit to the JMora Team on Vercel.

A member of the Team first needs to authorize it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant