Chapter 03 · Identity
IP infrastructure

Residential proxies — the datacenter-IP cliff on LinkedIn.

Before LinkedIn's classifier evaluates any of the behavioral signals from Chapter 02, it evaluates one cheap categorical signal: the residency class of the egress IP. Datacenter IPs are de facto disqualifying, and the residential-versus-datacenter classification is a binary feature that overwhelms most other inputs. Most operators discover this by burning their first three accounts on a $5/month VPS.

The premise

Every session arriving at LinkedIn's edge carries the operator's egress IP in its connection metadata. That IP is classified, on every request, against an internal residency taxonomy: datacenter, residential, mobile carrier, ISP-leased, hosting, VPN, Tor exit. The classification is cheap — a single ASN lookup against a maintained registry — and runs before any expensive behavioral analysis. The output is the dominant feature in the first-tier flagging decision. An account that has historically logged in from a residential ISP in San Francisco, then submits a request from an IP belonging to a major cloud provider's well-known ASN, is being told by its own session metadata that something has changed. The categorical mismatch alone is sufficient to elevate the session into manual review or issue a soft-block.

The empirical rate at which LinkedIn flags sessions originating from datacenter IPs is, across multi-account agency operators, north of 90% within the first 24 hours of sustained use. The remaining sub-10% are first-session accounts with no prior login history to mismatch against, on IPs not yet in the platform's blocklist feeds. Those accounts flag within a week.

IP residency classes and how the classifier identifies them

The taxonomy is not three categories but at least five. The discriminating signals are not proprietary — they are the publicly observable artifacts of how each IP range is registered, routed, and resolved.

ASN registration

Every IP belongs to an Autonomous System Number registered with a regional internet registry. The ASN's organization field is the first-pass discriminator: an ASN registered to a hosting provider, cloud vendor, or colocation facility produces a different categorical label than one registered to a residential ISP or mobile carrier. A single API lookup, and the cheapest signal in the entire detection stack.

BGP routing patterns

Residential ISP prefixes are advertised in dense, geographically consistent blocks via the ISP's transit. Datacenter prefixes are announced via the hosting provider's own ASN, often with anycast across multiple POPs. Mobile carrier prefixes come from large NAT pools serving aggregated subscribers. BGP topology confirms or contradicts the ASN label.

Reverse DNS, geolocation, and session history

PTR records on residential IPs follow ISP conventions — strings containing city code, ISP name, and a numeric subscriber identifier. Datacenter IPs resolve to provider-format hostnames with region and instance identifiers. Mobile carrier IPs resolve to carrier-format strings or no PTR at all. Geolocation across the major IP-intelligence providers maps residential IPs consistently to metropolitan areas matching the ISP's service footprint; datacenter IPs map to the facility city, rarely a population-distributed match for any given account's stated location. The final input is the account's own session history: every prior IP, with new IPs evaluated against the distribution — same ASN family, same metro, same residency class. A residential-to-residential transition within a metro is invisible. A residential-to-datacenter transition is the loudest signal a sessionizer can produce.

Datacenter IPs — the disqualifying category

The datacenter category is larger than most operators initially recognize. It includes every commodity VPS, every egress IP from the major cloud providers, every colocation facility, every bulletproof host, and every IP in the bulk-server segments of the second-tier hosting market — hundreds of millions of addresses, continuously updated. Any automation environment running from a cloud-hosted server, containerized worker, or developer's home network NAT'd behind a commercial VPN is, with high probability, presenting a datacenter IP to LinkedIn. This is the cliff. Binary, cheap to enforce, first gate every other infrastructure decision sits behind. An operator who has not solved IP residency has not started.

Residential proxies — the operational architecture

A residential proxy service routes outbound requests through IPs belonging to consumer ISPs. The category is dominated by two architectural patterns with materially different cost structures and legal postures.

The first is the peer-to-peer network. The provider distributes a software client that, once installed on a consumer device, allows the device to act as an exit node in exchange for compensation — bandwidth credit, an ad-free bundled app, or direct payment. The IPs are by construction residential, but the consent quality of the consumer participants has been the subject of regulatory action against several providers in the category. An operator routing production traffic through one is accepting a non-trivial probability the exit-node owner did not meaningfully consent.

The second is the ISP-issued residential pool. The provider has a direct commercial relationship with one or more residential ISPs and obtains a block of subscriber-allocated IPs. The pool is smaller and the geographic footprint narrower, but the legality posture is clean and per-IP stability is high. The cost is roughly $5 to $15 per gigabyte of egress bandwidth for shared rotating pools, and $50 to $300 per dedicated IP per month for sticky residential addresses. Bandwidth-billed is cheap in absolute terms but produces unpredictable monthly costs at scale; the per-IP model is more expensive but produces consistent costs and superior session stability.

Mobile carrier proxies

Mobile carrier proxies route traffic through IPs belonging to a wireless carrier's subscriber network. The residency signal is the strongest in the category, for a structural reason: carriers operate large carrier-grade NAT pools serving aggregated subscriber traffic, and the platform cannot meaningfully distinguish proxy traffic from organic mobile-app sessions because every subscriber shares the same egress IPs. A flag against a mobile carrier IP affects every legitimate subscriber on the same egress, which makes platforms structurally reluctant to act on residency signals against mobile alone. The cost is correspondingly high — $50 to $200 per gigabyte of bandwidth, dedicated mobile IPs running into the low four figures per month — an order of magnitude more per request than residential, in exchange for the strongest available residency signal.

ISP-leased proxies

The ISP-leased category sits between residential and datacenter on the cost curve and is, for sustained multi-account architectures, the typical operational choice. An ISP-leased IP is a dedicated address obtained by direct lease from an ISP — registered to a residential ASN, geolocating consistently to the ISP's service area, but allocated to a single tenant. Cost runs $80 to $400 per IP per month depending on ISP and region. Stability is the highest in the category — a single account can use the same egress IP for months — and residency classifies consistently as residential under every public dataset. For a 5-to-15-account architecture, one ISP-leased IP per account is the baseline. The IP layer alone runs $1,500 to $4,000 per month, dwarfed by the cost of a single restricted account.

Session persistence — the sticky-session requirement

A logged-in LinkedIn session produces dozens of requests — page loads, AJAX calls, image fetches, telemetry beacons — and every one carries the operator's egress IP. The platform verifies IP consistency across requests within a single session. An IP rotation mid-session is, from the platform's perspective, an impossible-travel event: the session began at one IP, an AJAX call arrives from a different IP one second later, no plausible explanation does not involve a proxy. The detection is trivial and the response is typically immediate.

The mitigation is the sticky-session feature. A sticky session binds the operator's traffic to a single exit IP for a configurable duration — typically 1 minute, 10 minutes, 30 minutes, or up to 24 hours on providers supporting extended TTLs. For LinkedIn-class automation the operational requirement is 24 to 72 hours, configured to match the operator's continuous-use session. Providers that do not offer sticky sessions with sufficient TTL — or whose implementation rotates on backend reconnection rather than the operator's explicit schedule — are unsuitable regardless of how well their IPs classify.

Geographic consistency

The IP must geolocate to a region consistent with three reference points: the account's stated location, prior login history, and content interaction patterns. A San Francisco account that has logged in exclusively from California IPs for two years, suddenly arriving from a Helsinki residential IP, is a first-tier flag — not because Helsinki residential IPs are suspicious, but because the inter-session geographic delta is incompatible with normal human travel. The looseness is metropolitan-area, not zip-code-level. San Francisco from Oakland: invisible. From Los Angeles: monitored. From Singapore: flagged within the same session. Proxy infrastructure must be selected by city, not by country. A multi-account architecture where every account routes through the same provider's New York exit pool fails geographic consistency on every account whose profile is not based in New York. This is why most cheap residential proxy setups produce flags within their first week.

TLS fingerprinting — JA3 and JA4

Beyond the IP layer, the TLS handshake itself produces a fingerprint identifying the client. JA3 — introduced by Salesforce engineers in 2017 — computes a hash from the TLS client-hello, capturing the version, cipher suites, extensions, elliptic curves, and point formats in their exact order. JA4 — released in 2023 — extends the model with separate fingerprints for the TLS and HTTP/2 layers (RFC 7540) and improved resistance to deliberate manipulation. Real Chrome, Firefox, Safari, and the LinkedIn mobile app each produce a distinct, well-known JA3/JA4 fingerprint. The platform maintains a registry of expected fingerprints for the known client population, and any session presenting a fingerprint outside that registry is at minimum monitored.

Automation libraries with default TLS settings produce identifiable fingerprints. Default Python requests and Node.js node-fetch each produce a fingerprint distinct from any real browser. Headless Chromium with the standard configuration produces a fingerprint subtly different from desktop Chromium because of headless-specific extension ordering. The variations are small — a single reordered extension — and sufficient to flag the session. Mitigations: drive a real browser on a real desktop OS, use a TLS-impersonation library that replays a known-good Chrome or Firefox fingerprint byte-for-byte, or operate against the mobile-app endpoint with a matching fingerprint. Each path requires sustained attention to fingerprint drift as browsers and the LinkedIn client are updated.

HTTP header order and case

Inside the TLS tunnel, the HTTP request itself produces a fingerprint from the order and case of its headers. Real Chrome emits headers in a specific deterministic order — Host, then Connection, then sec-ch-ua, then a long precise sequence. Firefox emits a different order. Safari emits a different order again. Automation libraries tend to emit headers in the order the developer added them, alphabetically, or in whatever order the underlying HTTP/2 implementation chose. The order is rarely identical to a real browser's, and any deviation is discriminating. The same applies to case: real browsers preserve specific conventions — User-Agent with leading capitals, sec-ch-ua lowercase, X-Requested-With with framework-specific capitalization — and libraries that normalize case produce a fingerprint matching no real browser. The Forwarded header (RFC 7239) and its older X-Forwarded-For sibling are also relevant: a proxy that injects either without stripping it leaks the operator's true origin IP back to the platform. Proxy services that do not strip forwarding headers are operationally unusable.

Mobile-app TLS fingerprints

The LinkedIn mobile app produces a TLS fingerprint distinct from the web client. The mobile endpoint operates under a more permissive rate-limit posture — a structural concession to the higher request volume of a typical mobile session — and the per-account connection-request ceiling is empirically somewhat higher on mobile than on web. Some advanced automation operates against the mobile endpoint to take advantage of the higher ceiling, with the corresponding requirement that the session present a TLS fingerprint, HTTP header pattern, and startup flow matching the mobile client — including OAuth dance, device-attestation handshake, and periodic telemetry beacons. The engineering investment is substantial and correspondingly fragile: every LinkedIn mobile release potentially shifts the expected fingerprint. Not a posture for an operator without dedicated engineering attention.

The IP-fingerprint-account binding

A working operational setup binds one residential IP to one browser fingerprint to one account, for a documented session lifetime, refreshed only on a documented schedule. The binding is not optional. Each component reinforces the others, and drift on any axis produces a session-integrity flag the others cannot compensate for. Account A logs in only from IP A, presenting fingerprint A, on schedule A. Account B logs in only from IP B, presenting fingerprint B, on schedule B. No cross-pollination — IP A never serves account B, fingerprint A never appears alongside IP B, schedules do not overlap in patterns suggesting a shared operator. Refresh schedules are themselves a signal surface. Rotating every day is suspicious; never rotating is unrealistic; rotating on a documented monthly cadence aligned with real residential churn — an ISP-side address renewal, a router reboot — is invisible.

Common operator failures observed in production

  • Running production volume on a $5/month VPS proxy. The IP is datacenter, the residency signal is wrong on the first request, the account flags within hours. The modal failure on first-time builds.
  • Rotating IPs every request. A rotating residential pool with default per-request rotation, every AJAX call from a different IP, the session-integrity check trips on the impossible-travel signal within the first page load.
  • Using shared residential pools without sticky sessions. The IPs are residential but the pool is shared with hundreds of operators running undifferentiated automation. The IPs accumulate platform-side risk scores from the cumulative pool behavior, and a clean account routed through a dirty IP inherits its score regardless.
  • Ignoring TLS fingerprint. IP correctly residential, geography correct, but the automation library produces a JA3 fingerprint identifiable as Python requests or default Puppeteer. The session flags on the fingerprint regardless of how well the IP classifies.
  • Mismatching IP geography with profile location. The provider's default residential exit is in a different metro than the account's stated location, every login is a geographic-consistency violation, the account flags within a week.
  • Sharing one IP across multiple accounts. The operator economizes by routing multiple accounts through the same residential IP. Real residential users do not share an IP with three other LinkedIn accounts whose connection graphs do not overlap; correlation analysis flags the entire cluster.
  • Forwarded-header leakage. A misconfigured proxy injects the operator's true origin IP into X-Forwarded-For or Forwarded (RFC 7239); the request arrives with the residential proxy IP in connection metadata and the operator's actual datacenter IP visible in the header. The platform flags on the inconsistency rather than the proxy itself.

Pre-deployment checklist

  • Egress IP classifies as residential, ISP-leased, or mobile under the major public IP-intelligence datasets — confirmed by lookup, not by the provider's claim
  • One IP per account, with no cross-account reuse
  • IP geolocates to the same metropolitan area as the account's stated location and prior login history
  • Sticky-session TTL configured to at least 24 hours, ideally 72, matching the operator's session pattern
  • Proxy provider strips Forwarded and X-Forwarded-For headers, confirmed by inspection of outbound request traces (RFC 7239)
  • TLS fingerprint matches a known real browser, confirmed against a JA3/JA4 reference library
  • HTTP header order and case match the same browser's emission pattern
  • A documented IP-refresh schedule calibrated to the residency class
  • Monitoring to detect when the provider rotates the backing IP allocation, and a process to re-validate residency on rotation

Where this fits in the broader infrastructure

IP residency is the first gate the platform applies to every session and the cheapest signal in the entire detection stack to enforce. An account whose IP infrastructure has not been solved is presenting a categorical mismatch on every request, regardless of how well the rest of the stack has been built. The behavioral signals from Chapter 02 are downstream of the residency check and cannot compensate for a wrong answer to it. For the multi-account architecture in Chapter 01, the IP layer is the structural prerequisite the rate-limit decisions in Chapter 04 sit on. The warmup runway in Chapter 05 produces engagement signal weighed against a baseline of expected residential behavior; an account whose IP does not classify as residential is being weighed against a baseline it cannot match.

A 10-account architecture with ISP-leased IPs, sticky sessions, and TLS-fingerprint-correct tooling runs $2,000 to $5,000 per month for the IP-and-fingerprint layer alone, before warmup labor, messaging tooling, or reply routing. For most teams that math is the deciding factor in whether to operate in-house or outsource. The asymmetry between the monthly cost of doing it correctly and the one-time cost of a restricted account — lost connection-graph value, founder time on appeal, permanent unrecoverability of the legal identity attached to the account — continues to argue, by a factor of approximately 50:1, in favor of provisioning the IP layer correctly the first time.

Skip the setup

Allston Labs operates LinkedIn outbound as a service.

We provision the multi-account architecture, set up residential proxy infrastructure, run manual warmup, configure messaging cadences, and route replies into your Slack. The accounts live under your team. The engineer on call lives in your Slack.