Skip to content

1.0.26: connector fixes for batches 3 and 4: Databay, GonzoProxy, 2extract, Simply Proxies, Coronium, Singapore Mobile Proxy, Gsocks, Proxy Bonanza, Proxies.sx, Proxy-Solutions, RapidProxy, MobileProxy.Space, CatProxies, PacketStream, Airproxy - #80

Merged
softglazee merged 5 commits into
mainfrom
fix/1.0.26-connectors-vendors-2
Nov 10, 2026

Conversation

@softglazee

Copy link
Copy Markdown
Owner

Per-vendor fixes from the 1.0.27 backlog, batches 3 and 4 (items 48 to 55 and 67 to 75). Stacked on #77 (lane 1, vendor fixes batches 1 and 2), which stacks on #73: merge #77 first, then this one. Every vendor answer in the tests is a fixture built from the vendor's documented shapes; nothing reaches a provider, and no real key or account id is used anywhere. Release stays 1.0.26.

Items

# Connector What was wrong What it does now
48 Databay Residential Flex offered 1 h and 2 h, then clamped to 30 min; State and City showed on every pool and were dropped off Residential; a hyphen in a place name became a space, and spaces went raw Keep same IP offers each pool its own times (Flex: 5, 10, 30 min, through #77's maxLifeByPool). State and City show and are sent on Residential only (#77's geoPools), and main refuses them elsewhere with a message. Place names are sent as the Connection String page asks: %2D for a hyphen, %20 for a space. The hint adds that a city is matched without its country.
49 GonzoProxy Country required but the select started on Any / Random; City sent for the mobile pool #77's countryRequired: no Any / Random option, the form starts on United States, and Pull asks for a country before calling the vendor. The hint says the mobile pool has no cities (the app cannot know a login's pool).
50 2extract Nothing said its default HTTPS could not be used Protocol offers HTTPS (TLS to the proxy, an HTTPS proxy row since 1.0.26) next to HTTP and SOCKS5; the hint says to pick the protocol set in Connection Helper, HTTPS being 2extract's default.
51 Simply Proxies How many showed "All / Leave blank for all", but blank is one rotating proxy; SOCKS5 sends the password in clear text One How many field for every connector; the list wording only where the pull lists owned proxies. The hint says SOCKS5 sends the password in clear text.
52 Coronium Expiry read tariff_expired_at as milliseconds only; support named expires_at; host from ip_address || connection_ip Coronium's OpenAPI (api.coronium.io/openapi.json, schema Proxy) documents tariff_expired_at in epoch ms and ip_address as the host with connection_ip as its alias, so the host code stays. The expiry now also reads expires_at (ISO in the same file), and a value in seconds is no longer read as 1970 (which would mark every line expired), in the pull and in the account check.
53 Singapore Mobile Proxy Hint and a comment said other countries are sold It sells Singapore only: rows come in as SG, and the hint and comment say so.
54 Gsocks No SOCKS5; auth header key <api_key> vs the docs' examples session <jwt>; undocumented list id Protocol select, SOCKS5 rows on the same host and port. The documented rule (key) goes first, or session first for a key that is a JWT; on 401/403 the other form is tried once and the one that works is kept (pull and account check). Ids may be numbers or plain tokens; a missing id fails with a clear message.
55 Proxy Bonanza IPs without a login were skipped silently Still skipped (a login is what the app imports), but counted: a pull that finds only such IPs says they look like an IP-authorization plan and what to change. The hint says so too.
67 Proxies.sx "Residential (peers)" used peer without -iptype-residential, so exits could be mobile Residential adds -iptype-residential (the docs' hard device-class filter).
68 Proxies.sx The 250 cap and hint ignored the 5-connection start limit; no -ttl-, so sessions ended after the 1-hour default The hint names the pricing page's parallel-connection limit next to the 250-session cap. New Keep same IP select, sent as -ttl-<seconds> on sticky rows; blank sends 24 hours. Country is required in the form (countryRequired), as main already required.
69 Proxy-Solutions Errors and the label disagreed Every error names the Integration token; an empty key field asks for the field by its own name (API key, Integration token) for every connector with a vendor label. The empty seed categories is a website item, not app.
70 RapidProxy, MobileProxy.Space, Proxy-Solutions HTTP/SOCKS5 lived under "Pool type" The Protocol select (proto: true, proxyType). Main reads proxyType and still honours an old caller's poolType: 'socks5' (protocolChoice).
71 RapidProxy maxLife: 180 but no 180 option; hint said HTTP only Its own list up to 3 hours (lifeOptions, new life180 key); the hint says HTTP and SOCKS5 share the port.
72 CatProxies Mobile sticky usernames had -sid- without -ttl-; Mobile offered 6 to 24 h then clamped to 4 h; US gateways only; no Premium Residential A Mobile sticky session always carries -ttl- (30m when blank, as the form says). Keep same IP per pool: its own steps (lifeOptions, with 3 and 4 hours for Mobile's accepted ttls) cut per pool by maxLifeByPool: Mobile 5 min to 4 h, Standard to 24 h, Premium to 7 days. A Gateway select (US, Europe, Asia) picks resi-us/fr/sg, mobile-us/eu/asia or the Premium server, saved with the credentials. Premium Residential (resix, from catproxies.com/docs/api): us/eu/asia.premium.catproxies.com, HTTP 6011-6013 and SOCKS5 6014-6016, targeting on the password (<pass>-country-gb_city-london_session-<8>_lifetime-1h); a state is US-only and not combined with a city.
73 PacketStream Its docs say Proxy Access and auth key; HTTPS 31111 unused; ISO country codes Messages and hint say Proxy Access and auth key. HTTPS (31111, TLS to the proxy) is a Protocol choice: the app reaches HTTPS proxies since 1.0.26 (buildProxyServerArgument, proxyAgentScheme, httpRelay); HTTP stays the default, as the tested one. Country names stay (codes were ignored on 6 Oct): open question.
74 Airproxy Every proxy HTTP with country: null Rows are IT. A Protocol select adds SOCKS5 on the same port (seen in the dashboard on 29 Sep, not in the docs); HTTP stays the default and the hint says what to do if SOCKS5 fails.
75 MobileProxy.Space proxy_host_ip instead of the equipment-independent host; country: null; docs disagree on the base URL The equipment-independent address (proxy_independent_*_hostname or _host_ip on proxy_independent_port, from the OpenAPI file) wins when a proxy has one. Rows carry their country from id_country through get_id_country (asked only when needed; a failure still imports). The API stays on mpsapi.com, the address the current docs page gives: open question.

Shared pieces: this uses #77's maxLifeByPool, geoPools (geoForPool) and countryRequired, and adds: maxLifeByPool also cuts a vendor's own lifeOptions list; geoSync.protoHttps (HTTPS in Protocol) and geoSync.regions (CatProxies' Gateway select, sent as zone); LIFE_BLANK_DEFAULTS.proxiessx = 1440; life180 and life240 keys; the empty-key error names the vendor's own field.

How it was verified

Noticed, not fixed

  • CatProxies ISP and Datacenter still show Keep same IP, which fixed IPs ignore (State, City and Sticky session are refused with a message).
  • Simply Proxies' HTTPS endpoint (6889) could now be offered, since the app has HTTPS proxies, but its sticky window is fixed at 12 hours, so Keep same IP would need to follow the protocol.
  • Gateway connectors show How many placeholder 5 while a cleared field means one rotating proxy (every gateway connector; the Keep same IP option already says "Different IP each time").
  • Airproxy's in_use_till (expiry) is not read; Coronium's Retry-After on 429 is not shown; Proxies.sx's -rot-sticky-strict is not used.

Open questions for the vendors (built from the docs; each fails with a clear message if wrong)

  • Databay: does the gateway decode %20 / %2D (Connection String page) or want raw spaces (Filter by City page)?
  • GonzoProxy: how a login picks its pool, and whether a mobile login refuses a city.
  • 2extract and PacketStream: HTTPS rows not yet tested live; does 2extract's gateway enforce the protocol set per proxy?
  • Coronium: which expiry field and unit the live list returns (tariff_expired_at ms per the OpenAPI, expires_at per support).
  • Gsocks: which auth header works (key rule or session examples); the list id field; SOCKS5 on the same port.
  • Proxy Bonanza: does an IP-authorization-only plan return its IPs without a login?
  • Proxies.sx: is -ttl- idle or absolute; parallel connections (pricing page 5 at Starter, docs 500).
  • RapidProxy: SOCKS5 on 5001 (read from the dashboard, not tested live).
  • CatProxies: the Premium Residential plan's credentials from GET /orders/:id; the EU and Asia gateways.
  • PacketStream: ISO country codes (its docs now) vs dashboard names (what worked on 6 Oct).
  • Airproxy: SOCKS5 on the proxy's port (seen once in the dashboard).
  • MobileProxy.Space: canonical API address (mpsapi.com or mobileproxy.space); is the equipment-independent address the one its dashboard recommends?

…oronium, Singapore Mobile Proxy, Gsocks, Proxy Bonanza, Proxies.sx, Proxy-Solutions, RapidProxy, MobileProxy.Space, CatProxies, PacketStream and Airproxy

- Databay: State and City are refused off Residential with a message instead of being dropped, and a
  place name is sent as the Connection String page asks: a hyphen as %2D and a space as %20.
- 2extract and PacketStream: Protocol HTTPS makes HTTPS rows (TLS to the proxy, a proxy type since
  1.0.26); PacketStream's HTTPS gateway is port 31111. PacketStream's messages say Proxy Access and
  auth key, as its docs do; the country stays the dashboard name the 6 Oct live test needed.
- Coronium: the expiry is read from tariff_expired_at (epoch ms in Coronium's OpenAPI; a value in
  seconds is no longer read as 1970) or from expires_at, in the pull and the account check.
- Singapore Mobile Proxy rows are SG, Airproxy rows IT; Airproxy and Gsocks rows can be SOCKS5 on the
  same port.
- Gsocks: the documented "key" header first and the "session" form its examples use once on 401/403,
  keeping the one that works (pull and account check); list ids may be plain tokens; clearer errors.
- Proxy Bonanza: IPs without a login are counted, and a pull of only those says why.
- Proxies.sx: Residential adds -iptype-residential (peer mixes residential and mobile devices); sticky
  rows carry -ttl- from Keep same IP, 24 hours when blank instead of the gateway's 1-hour default.
- RapidProxy, MobileProxy.Space and Proxy-Solutions read the protocol from proxyType (protocolChoice),
  and a caller that still sends it as poolType keeps working. Proxy-Solutions' errors name the
  Integration token.
- MobileProxy.Space: the equipment-independent address wins when a proxy has one, and rows carry their
  country from id_country (get_id_country, asked only when needed). The API stays on mpsapi.com.
- CatProxies: a Mobile sticky session always carries -ttl- (30 minutes when blank); a Gateway region
  (US, Europe, Asia) picks resi-us/fr/sg, mobile-us/eu/asia or the Premium server; Premium Residential
  (resix) puts country, state or city, session and lifetime on the password, on its own ports.
… countries, per-pool Keep same IP, Protocol instead of Pool type, HTTPS, a CatProxies gateway, and hints that say what the pull does

- GonzoProxy and Proxies.sx need a country: the Country select has no Any / Random option and says
  it is required, and Pull asks for one before calling the vendor.
- Keep same IP offers each pool its own times (geoSync.poolLife; lifeOptionsFor takes the pool):
  Databay Residential Flex up to 30 minutes, CatProxies Mobile up to 4 hours and Premium up to 7 days;
  RapidProxy runs to its 180 minutes. A time the new pool does not offer goes back to blank.
- Databay shows and sends State and City on Residential only (geoSync.geoPools).
- RapidProxy, MobileProxy.Space and Proxy-Solutions pick HTTP or SOCKS5 under Protocol, not Pool type;
  Airproxy and Gsocks gain Protocol; 2extract and PacketStream offer HTTPS too.
- CatProxies: Premium Residential pool and a Gateway select (US, Europe, Asia), saved with the
  credentials. Proxies.sx gains Keep same IP (its -ttl-).
- How many uses the "All / blank for all" wording only for connectors that list owned proxies, so
  Simply Proxies shows the gateway field. An empty key field names the vendor's own field (API key,
  Integration token).
- Hints in English and Spanish: Databay's Residential-only State and City and ambiguous city names,
  GonzoProxy's mobile pool without cities, 2extract's HTTPS default, Simply Proxies' clear-text SOCKS5
  password, Singapore only, Gsocks and Airproxy protocols, Proxy Bonanza IP-authorization plans,
  Proxies.sx connection limits and session time, PacketStream's Proxy Access and HTTPS gateway.
- test/connectorsVendors2.test.js: one or more tests per backlog item 48 to 55 and 67 to 75, run
  against the vendor sections of ipcHandlers.js with a stubbed transport and fixtures from the
  documented shapes: Databay pools, State and City, %2D/%20; required countries; HTTPS rows; Simply
  Proxies' How many; Coronium expiry; SG and IT rows; Gsocks protocol, header fallback and ids; Proxy
  Bonanza IP authorization; Proxies.sx -iptype- and -ttl-; Integration token errors; Protocol with the
  old poolType; RapidProxy 180 minutes; CatProxies ttl, per-pool times, gateways and Premium;
  PacketStream HTTPS and wording; MobileProxy.Space address and country; en and es texts.
- Existing tests updated for the intended changes: Databay's encoded place names, Proxies.sx's
  -iptype-residential and -ttl- usernames, the Gsocks header, RapidProxy's own Keep same IP list and
  the pool-aware lifeOptionsFor, one How many field. Harness only: protocolChoice,
  mobileProxySpaceGet, PROXIESSX_DEFAULT_TTL_MIN and gsocksAuthSchemes are lifted next to their callers.
…rs-vendors-2

Both lanes extended the connector form the same way, so the merge keeps one mechanism for each:
- Keep same IP per pool: lane 1's maxLifeByPool now also cuts a vendor's own lifeOptions list.
  Databay Residential Flex uses maxLifeByPool (30); CatProxies lists its own steps (3 and 4 hours for
  Mobile's ttl) with maxLifeByPool for Standard, Mobile, ISP and Datacenter. The pool-change reset is
  lane 1's choosePool.
- State and City per pool: lane 1's geoForPool / geoSync.geoPools (Databay: Residential only).
- Required country: lane 1's countryRequired (no Any / Random, starts on United States), now also for
  GonzoProxy and Proxies.sx; the duplicate check and its strings are dropped.
- Hints: lane 1's texts for its vendors, lane 2's for its own. Tests follow the shared mechanisms.
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