fix(nextor): mantiene una sola IP residencial en toda la consulta - #11
Open
pachedev wants to merge 1 commit into
Open
fix(nextor): mantiene una sola IP residencial en toda la consulta#11pachedev wants to merge 1 commit into
pachedev wants to merge 1 commit into
Conversation
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.
|
@pachedev is attempting to deploy a commit to the JMora Team on Vercel. A member of the Team first needs to authorize it. |
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.
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.