<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Michael Harris</title>
    <description>The latest articles on DEV Community by Michael Harris (@michael_harris).</description>
    <link>https://dev.to/michael_harris</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3707302%2Ffa4e9458-a6f7-45e8-95ba-e73b6b0f2312.png</url>
      <title>DEV Community: Michael Harris</title>
      <link>https://dev.to/michael_harris</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/michael_harris"/>
    <language>en</language>
    <item>
      <title>Is Surfe Safe on LinkedIn? I Read Its Extension's Source Code</title>
      <dc:creator>Michael Harris</dc:creator>
      <pubDate>Thu, 03 Sep 2026 09:13:39 +0000</pubDate>
      <link>https://dev.to/michael_harris/is-surfe-safe-on-linkedin-i-read-its-extensions-source-code-58h8</link>
      <guid>https://dev.to/michael_harris/is-surfe-safe-on-linkedin-i-read-its-extensions-source-code-58h8</guid>
      <description>&lt;p&gt;&lt;strong&gt;Quick answer&lt;/strong&gt;: Surfe sends no connection requests, no InMails, and no sequences. That is genuinely reassuring. But the LinkedIn-to-CRM enrichment extension at surfe.com, formerly Leadjet, extension ID kojhcdejfimplnokhhhekhiapceggamn - not Safe Surfer, SurfEasy VPN, Surfer SEO, or surfe.pro - still exposes an architectural restriction risk at zero outreach volume.&lt;/p&gt;

&lt;p&gt;I unpacked Surfe v3.2.3 (Manifest V3), whose CRX was fetched on 2026-06-05, and reviewed it again in 2026-08. The shipped source harvests JSESSIONID, li_at, and li_a by name on every page-load cycle and holds them in extension storage, with api.prod.surfe.com called on every cycle. That is not proof that the token values are uploaded. It is why my session verdict is session upload suspected, not confirmed.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Surfe actually is
&lt;/h2&gt;

&lt;p&gt;Surfe is type 2 by mechanism and type 1 by execution: cookie-bridge machinery, but local execution. It has the cookies permission, stores named session tokens, and synchronously contacts the vendor backend. Yet it has no remote-control queue, vendor-hosted browser, or server-side LinkedIn login. The Voyager requests run in your browser, through your session, from your IP.&lt;/p&gt;

&lt;p&gt;That distinction matters. I did not run a live cloud-IP test because there is no cloud-side LinkedIn session or address to measure (has_remote_control_queue: false). There is therefore no exit-IP result or cross-account isolation result. The genuine reassurance is that LinkedIn sees your IP, your geolocation, and your device fingerprint, not a foreign vendor-cloud fingerprint. A parallel session or 48-point fingerprint mismatch would be conditional on server-side replay, which I did not observe.&lt;/p&gt;

&lt;p&gt;The dated extension-list result is another real negative. Surfe's ID was not on the target list checked for the v3.2.3 audit round, using the 6,167+ entry target list. AED is the label visible in LinkedIn's own production JavaScript, where results are sent as an AedEvent; LinkedIn has never publicly acknowledged it, so it is neither an official feature name nor my coinage. BrowserGate, an independent 2025-26 investigation that took apart LinkedIn's production bundle, and Linked Helper's security study - static audits of 16 extensions plus live two-account tests of 7 cloud tools - document the mechanism. It is a Chromium-only check.&lt;/p&gt;

&lt;p&gt;The growth context is 38 entries in 2017 -&amp;gt; about 461 in 2024 -&amp;gt; 5,459 in December 2025 -&amp;gt; 6,167 in February 2026, roughly a dozen additions per day. "Not listed" is perishable; a listed result only becomes more true. And not listed does not mean not detectable: Surfe exposes assets/* and inject.css to , leaving an extension-probe path open.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where your session goes
&lt;/h2&gt;

&lt;p&gt;Here is the chain in code order. The numeric signals below are string occurrences in the shipped source, not runtime telemetry.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1 - Read the LinkedIn cookies locally&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;js chrome.cookies.getAll({domain: www.${Uf}}, e =&amp;gt; { // Uf = "linkedin.com" const t = ["JSESSIONID", "li_at", "li_a"], n = {}; e.forEach(e =&amp;gt; { "JSESSIONID" === e.name ? n.sessionID = e.value.split('"').join("") : t.includes(e.name) &amp;amp;&amp;amp; ( n[e.name] = e.value, ("li_a" === e.name || "li_at" === e.name) &amp;amp;&amp;amp; (n.li_a_expiration = e.expirationDate?.toString()) ); }); eh(n); // writes {sessionID, li_at, li_a, li_a_expiration} to chrome.storage.local });&lt;/code&gt;&lt;br&gt;
Jv() runs after every chrome.tabs.onUpdated event whose status is complete, not only on LinkedIn tabs, and on a refresh-li-cookies message. The source contains five chrome.cookies references, nine li_at references, and two JSESSIONID references.&lt;br&gt;
What this means for detection: Nothing yet. A local cookie read produces no LinkedIn-visible signal. The tokens are harvested by name and held in extension storage, but this step alone does not show them leaving the browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2 - Call Surfe and set li-protect&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;js const e = await (async () =&amp;gt; (await Bp("GET", { url: "/li-protect" })).data)(); chrome.cookies.set({url:"https://www.linkedin.com", name:"li-protect", value: e.protect ? "true" : "false"});&lt;/code&gt;&lt;br&gt;
Bp() authenticates to the code constant Lf = "&lt;a href="https://api.prod.surfe.com" rel="noopener noreferrer"&gt;https://api.prod.surfe.com&lt;/a&gt;" with a Surfe Bearer JWT. This call follows every harvest cycle, proving that Surfe's infrastructure knows each cycle happened in real time. It does not prove the three cookie values are in that request.&lt;/p&gt;

&lt;p&gt;What this means for detection: LinkedIn cannot directly see the request to Surfe. It can see the second artifact: an extension-managed li-protect cookie on linkedin.com, carried with requests to LinkedIn. That artifact does not map cleanly to a documented detection vector, so I will not invent one. Parallel-session and fingerprint-mismatch vectors apply only if the session is replayed elsewhere, which this read did not establish.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3 - Inject on every HTTPS site&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;json { "host_permissions": ["https:///"], "content_scripts": [ {"matches":["&amp;lt;all_urls&amp;gt;"],"js":["assets/scripts/boot.js"],"run_at":"document_start","all_frames":true}, {"matches":["&amp;lt;all_urls&amp;gt;"],"js":["inject.js"],"css":["inject.css"],"run_at":"document_end"} ], "web_accessible_resources": [ {"resources":["assets/*","inject.css"],"matches":["&amp;lt;all_urls&amp;gt;"]} ] }&lt;/code&gt;&lt;br&gt;
The scanner field injects_into_linkedin:false is only a manifest URL-filter heuristic.  includes LinkedIn, and the scripts load at both ends of page construction. It is wrong to translate that heuristic into "does not inject into LinkedIn."&lt;/p&gt;

&lt;p&gt;What this means for detection: LinkedIn's Spectroscopy scanner recursively searches the DOM for chrome-extension://, extracts a 32-character extension ID, and reports a SpectroscopyEvent without needing a target list. Its page-snapshot worker can also send traces server-side. Separately, the web-accessible resources keep an AED-style probe possible even though Surfe was not listed in the dated snapshot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4 - Call LinkedIn's private API&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;text direct_linkedin_api: true headers: csrf-token, x-li-*, x-restli bundles: background.js, inject.js, sidepanel.js string occurrences: voyager: 2, graphql: 7, csrf: 12&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;These are credential-bearing Voyager/GraphQL requests on the user's session. They execute locally, so this is not a vendor cloud driving the account.&lt;/p&gt;

&lt;p&gt;What this means for detection: This creates the request-map anomaly: an ordinary profile visit produces markup, API calls, prefetches, and telemetry together. An API-only read can access the profile without the surrounding page visit and its companion traffic. LinkedIn can see that mismatch in server logs; BrowserGate and Linked Helper's security study describe this vector.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5 - Synthesize UI events and leave telemetry alone&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;text string occurrences in the shipped bundles: synthetic_event: 77, programmatic_click: 5 manifest: declarative_net_request: null (blocks_traffic: false) settings.json: timeZone default "UTC"; action delay presets 0, 1.2, 1.5, 4, 8, 15 seconds&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The event patterns are dispatchEvent and new KeyboardEvent in the sidebar and overlay code, not evidence of invitations being sent. The settings also have no daily cap, working-hours scheduler, or randomisation. The vendor's blog offers advice - about 500 profile views per day and 100-150 invitations per week - but the build enforces no cap. Advice in the blog post, no cap in the code. These controls concern enrichment actions, not invite automation.&lt;/p&gt;

&lt;p&gt;What this means for detection: Script-created events have read-only isTrusted:false; a content script cannot make them human-trusted. Because Surfe blocks no traffic, LinkedIn's li/track telemetry and fingerprint endpoints receive the events in full. That is also a credit: Surfe never triggers the self-exposure signal caused by imperfect telemetry blocking. Separately, a default UTC timezone can mismatch a non-UTC user's locale, while fixed delays including zero and no caps feed the behavioral scoring layer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6 - Export data and widen the blast radius&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;text GET/POST https://api.prod.surfe.com/auth/contacts/export GET/POST https://api.prod.surfe.com/auth/organizations/export LinkedIn fields: name, linkedinID, salesNavURL, email, company HubSpot cookies: hubspotapi, hubspotapi-csrf, __cf_bm from .hubspot.com Telemetry: Datadog RUM, Intercom&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The contact and organization endpoints move profile data through Surfe to a connected CRM such as HubSpot, Salesforce, Pipedrive, Outreach, Salesloft, or Aircall. The same harvest function also collects the three named HubSpot cookies. Surfe's Trust Center at surfe.com/security, fetched 2026-08-27, covers encryption, ISO 27001, GDPR, and CCPA, but does not mention LinkedIn, cookies, or session tokens.&lt;/p&gt;

&lt;p&gt;What this means for detection: No new LinkedIn detection vector beyond the private-API reads in Step 4. This is a privacy and blast-radius finding: one extension holds authenticated material for LinkedIn and HubSpot. Datadog RUM and Intercom add behavioral/support telemetry, but the export itself is not a separate LinkedIn signal.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffsg1alqqvoszq71antr3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffsg1alqqvoszq71antr3.png" alt="flow surfe" width="799" height="369"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The diagram is a reconstruction of the shipped flow: named tokens into extension storage; the vendor API called each cycle; Voyager requests leaving from your browser and IP, not Surfe acting from its own address.&lt;/p&gt;

&lt;p&gt;That local-execution point is not a footnote. It prevents this teardown from being generalized into a claim about vendor-cloud automation. The uncomfortable part is the browser surface: broad permissions, page injection, token storage, private-API traffic, and deterministic enrichment behavior. The reassuring part is equally concrete: no hosted LinkedIn login, no remote driver, and no evidence of a second simultaneous session.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to repeat the check
&lt;/h2&gt;

&lt;p&gt;Pull extension ID kojhcdejfimplnokhhhekhiapceggamn from the Chrome Web Store and unpack the CRX. Read the extension's manifest.json for permissions, host_permissions, content_scripts.matches, and web_accessible_resources. Beautify the JavaScript bundles, then grep them for chrome.cookies, li_at, JSESSIONID, voyager, csrf-token, and dispatchEvent. Also search LinkedIn's own JavaScript bundles for AedEvent. The claims above are falsifiable against the build, not dependent on trusting my label for it.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Finding&lt;/th&gt;
&lt;th&gt;Detection or account meaning&lt;/th&gt;
&lt;th&gt;How I know&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;JSESSIONID&lt;/code&gt;, &lt;code&gt;li_at&lt;/code&gt;, &lt;code&gt;li_a&lt;/code&gt; harvested after every completed page load&lt;/td&gt;
&lt;td&gt;No signal at local-read stage; replay would be conditional and unobserved&lt;/td&gt;
&lt;td&gt;Code read&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vendor API called after every harvest; &lt;code&gt;li-protect&lt;/code&gt; set on LinkedIn&lt;/td&gt;
&lt;td&gt;Vendor knows each cycle; cookie is a real artifact with no clean documented vector&lt;/td&gt;
&lt;td&gt;Code read&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;&amp;lt;all_urls&amp;gt;&lt;/code&gt; at start/end, all frames, HTTPS wildcard&lt;/td&gt;
&lt;td&gt;Spectroscopy and page-snapshot exposure&lt;/td&gt;
&lt;td&gt;Code read&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;assets/*&lt;/code&gt; and &lt;code&gt;inject.css&lt;/code&gt; exposed on &lt;code&gt;&amp;lt;all_urls&amp;gt;&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;AED-style probe path despite the clean dated list result&lt;/td&gt;
&lt;td&gt;Code read&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Voyager, GraphQL, and CSRF strings appear 2, 7, and 12 times&lt;/td&gt;
&lt;td&gt;Request-map anomaly from private API access&lt;/td&gt;
&lt;td&gt;Static signal count&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Synthetic-event and click strings appear 77 and 5 times&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;isTrusted:false&lt;/code&gt;; unblocked telemetry records the surface&lt;/td&gt;
&lt;td&gt;Static signal count&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UTC; delays 0/1.2/1.5/4/8/15 seconds; no cap/schedule/randomisation&lt;/td&gt;
&lt;td&gt;Timezone/locale mismatch and behavioral scoring&lt;/td&gt;
&lt;td&gt;Code read&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HubSpot session material harvested in the same function&lt;/td&gt;
&lt;td&gt;Privacy and single-point-of-failure issue, not LinkedIn detection&lt;/td&gt;
&lt;td&gt;Code read&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What this means for your account
&lt;/h2&gt;

&lt;p&gt;LinkedIn uses a scoring model, not a tripwire. The injected surface, private-API traffic, synthetic events, UTC default, and behavioral settings add signals; none means an instant restriction. Surfe also removes two major surfaces: it does not send outreach and it executes locally from your IP and fingerprint.&lt;/p&gt;

&lt;p&gt;The review corpus is unusually clear: nobody is complaining, because nobody was looking at this layer. Across 95 rows, sentiment was strongly positive - 58 delighted and 24 satisfied - and neither of the two incidental keyword hits concerned account risk. There is no supported report of Surfe causing a ban or restriction.&lt;/p&gt;

&lt;p&gt;One five-star G2 reviewer noticed passive behavior without treating it as security evidence:&lt;/p&gt;

&lt;p&gt;"If I'm just looking at a company page and the extension is installed, I don't really think this should count as an 'action'. I believe a more accurate count of actions would just include active ones like clicking to go to the CRM or syncing…" G2, 5-star, Head of Marketing (mid-market), 2023-04-14.&lt;/p&gt;

&lt;p&gt;The interesting phrase is "just looking." The reviewer saw that installation alone registered activity; the source explains why the extension has passive presence on every completed tab load.&lt;/p&gt;

&lt;p&gt;The counter-voice is positive and deserves to stay positive:&lt;br&gt;
"Easy to integrate, no hassle at all, data quality looks very promising as they scrape various tools." G2, 4.5-star, enterprise, 2024-10-17.&lt;/p&gt;

&lt;p&gt;Here "scrape" describes enrichment sourcing, while Surfe's safety messaging describes the absence of bulk LinkedIn actions. Both can be true. The gap between enrichment and browser mechanics is precisely why reading the source adds information a feature review cannot.&lt;br&gt;
A two-star reviewer described a governance surprise rather than account risk:&lt;br&gt;
"Turns out it adds leads to your CRM contact and company records, as well as Leads. This bloats your CRM with contacts and companies records with data you have never talked to." G2, 2-star, small business, 2024-07-29.&lt;br&gt;
"Data you have never talked to" is the useful detail: where enrichment lands was not obvious before purchase. It supports scrutiny of the export path, not a restriction claim.&lt;/p&gt;

&lt;p&gt;Category evidence should not be mislabelled as Surfe evidence:&lt;br&gt;
"We lost about €17K in client refunds last year because the chrome extension-based tool we were using got five of our client accounts banned in a single month." Reddit, r/salesdevelopment, 2026-02-13&lt;br&gt;
That post names no tool and cannot be attached to Surfe. It shows that extension architecture can have costed consequences elsewhere; it does not override the absence of a Surfe-specific report.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is Surfe safe to use on LinkedIn?&lt;/strong&gt;&lt;br&gt;
It does not send connection requests, InMails, or sequences, so its behavioral restriction risk is lower than an outreach sequencer's. Its ID was also absent from the dated AED target-list check. The remaining exposure is structural: named session-token harvesting into extension storage, all-site content scripts, private-API calls, synthetic events, and unblocked telemetry. No automation tool is ban-proof.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does Surfe have access to my LinkedIn account?&lt;/strong&gt;&lt;br&gt;
Its extension reads li_at, li_a, and JSESSIONID by name after every completed page load and holds them in extension storage. Surfe's production API is called on every cycle, so its infrastructure knows the harvest occurred. The source does not prove that the values themselves are transmitted, and I do not claim it does.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does Surfe collect user data - and exactly what?&lt;/strong&gt; &lt;br&gt;
Yes: the three LinkedIn session tokens go into extension storage; LinkedIn profile/company fields including name, linkedinID, salesNavURL, email, and company go to api.prod.surfe.com and the connected CRM; Datadog RUM and Intercom receive behavioral/support telemetry; and the same function takes hubspotapi, hubspotapi-csrf, and __cf_bm from .hubspot.com.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does the extension only run on LinkedIn?&lt;/strong&gt;&lt;br&gt;
No. Its content scripts match  at document_start and document_end, and its host permission is https:///. It is present in every HTTPS tab.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does LinkedIn detect Surfe?&lt;/strong&gt;&lt;br&gt;
The extension ID was not on the AED list in the checked snapshot, but that is not immunity. A DOM-wide scanner needs no list, while exposed web-accessible resources leave an AED-style probe path. The target list grows by roughly a dozen entries daily, making a negative result perishable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can Surfe get my LinkedIn account banned or restricted?&lt;/strong&gt;&lt;br&gt;
It can add restriction risk through detectable browser and request patterns, but detection is not an instant ban. Surfe does not send outreach and runs from your own IP and fingerprint. I found no user report of a Surfe-caused restriction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How much does Surfe cost, and what is a safer alternative?&lt;/strong&gt;&lt;br&gt;
From Surfe's pricing page fetched 2026-08-27: Free is $0; Essential is $49/user/month or $39 billed annually; Pro is $89/user/month or $79 billed annually; Enterprise is custom. Architecturally, moving away from a browser extension removes the extension-ID and injection surfaces, though no tool removes all restriction risk.&lt;/p&gt;

</description>
      <category>linkedin</category>
      <category>security</category>
      <category>privacy</category>
      <category>webdev</category>
    </item>
    <item>
      <title>7 Dripify Alternatives Compared: What Actually Matters in 2026</title>
      <dc:creator>Michael Harris</dc:creator>
      <pubDate>Tue, 01 Sep 2026 11:30:55 +0000</pubDate>
      <link>https://dev.to/michael_harris/7-dripify-alternatives-compared-what-actually-matters-in-2026-42oo</link>
      <guid>https://dev.to/michael_harris/7-dripify-alternatives-compared-what-actually-matters-in-2026-42oo</guid>
      <description>&lt;p&gt;Quick answer: While Dripify offers a polished cloud dashboard and hands-off multichannel drips, running outbound at scale often comes down to an architectural choice: hosted cloud pools versus direct session custody. For teams prioritizing strict account safety, granular pacing, and predictable pricing, Linked Helper stands out as the primary isolated alternative, keeping sessions and IP management strictly on local or VPS hardware ($15/mo vs. typical cloud tiers starting at $40–$100+/mo).&lt;/p&gt;

&lt;p&gt;Choosing a LinkedIn automation tool by marketing checklists alone often misses the most consequential technical difference: where your credentials, browser fingerprints, and live sessions actually execute.&lt;/p&gt;

&lt;p&gt;To understand the real trade-offs behind Dripify and its main competitors, I spent several weeks comparing seven top alternatives across architecture, session custody, native CRM capabilities, pricing structures, and real-world account risk. Here is how they stack up when you look past the feature tables.&lt;/p&gt;

&lt;h2&gt;
  
  
  The comparison of 7 Dripify Alternatives
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Starting price /mo&lt;/th&gt;
&lt;th&gt;Architecture&lt;/th&gt;
&lt;th&gt;Stores your LinkedIn token?&lt;/th&gt;
&lt;th&gt;CRM integrations&lt;/th&gt;
&lt;th&gt;Free trial&lt;/th&gt;
&lt;th&gt;G2 rating&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Linked Helper&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$15/mo&lt;/td&gt;
&lt;td&gt;Desktop / Isolated App&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;11 native&lt;/td&gt;
&lt;td&gt;14 days (no card)&lt;/td&gt;
&lt;td&gt;4.5★ (142)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Expandi&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$99/mo&lt;/td&gt;
&lt;td&gt;Cloud (cookie-bridge connector)&lt;/td&gt;
&lt;td&gt;Yes (app.expandi.io)&lt;/td&gt;
&lt;td&gt;3 (HubSpot, Pipedrive, Salesforce)&lt;/td&gt;
&lt;td&gt;7 days (card required)&lt;/td&gt;
&lt;td&gt;4.1★ (98)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Salesflow&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$99/mo&lt;/td&gt;
&lt;td&gt;Cloud&lt;/td&gt;
&lt;td&gt;Yes (vendor cloud)&lt;/td&gt;
&lt;td&gt;3 (HubSpot, Pipedrive, Salesforce)&lt;/td&gt;
&lt;td&gt;7 days&lt;/td&gt;
&lt;td&gt;4.3★ (128)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;HeyReach&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$79/mo&lt;/td&gt;
&lt;td&gt;Cookie-bridge / Session-upload&lt;/td&gt;
&lt;td&gt;Yes (vendor cloud)&lt;/td&gt;
&lt;td&gt;2 (Breakcold, HubSpot)&lt;/td&gt;
&lt;td&gt;14 days&lt;/td&gt;
&lt;td&gt;4.6★ (21)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Meet Alfred&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$59/mo&lt;/td&gt;
&lt;td&gt;Cloud (credential login)&lt;/td&gt;
&lt;td&gt;Yes (vendor cloud)&lt;/td&gt;
&lt;td&gt;10 native (HubSpot, Salesforce, etc.)&lt;/td&gt;
&lt;td&gt;7 days observed&lt;/td&gt;
&lt;td&gt;3.2★ (30)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Waalaxy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$42/mo&lt;/td&gt;
&lt;td&gt;Chrome extension + cloud bridge&lt;/td&gt;
&lt;td&gt;Yes (vendor cloud)&lt;/td&gt;
&lt;td&gt;4 (HubSpot, Pipedrive, etc.)&lt;/td&gt;
&lt;td&gt;14 days&lt;/td&gt;
&lt;td&gt;4.6★ (528)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Skylead&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$100/mo&lt;/td&gt;
&lt;td&gt;Cloud (credential login)&lt;/td&gt;
&lt;td&gt;Yes (vendor cloud)&lt;/td&gt;
&lt;td&gt;3 (HubSpot, Pipedrive, Salesforce)&lt;/td&gt;
&lt;td&gt;7 days&lt;/td&gt;
&lt;td&gt;4.5★ (125)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Note: The table reflects vendor information, ratings, and hands-on checks completed in June 2026. A cloud label is not automatically a verdict, but it tells you to investigate session custody and assigned IPs before comparing workflow features.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Linked Helper: local session custody at the lowest entry price
&lt;/h2&gt;

&lt;p&gt;Linked Helper takes a different route from every other product here. Its desktop app uses its own browser engine and runs from your machine, keeping the LinkedIn session token local instead of uploading it to vendor infrastructure. Actions therefore originate from the machine and IP you control.&lt;/p&gt;

&lt;p&gt;The plan costs $15/month or $8.25/month billed annually, with a 14-day free trial. More precisely, the current offer is $15/month or $8.25/month billed annually, with a 14-day free trial and no credit card requirement. Linked Helper has served 500,000+ users since 2016.&lt;/p&gt;

&lt;p&gt;This lower price does not mean a stripped-down integration layer. You get 11 direct CRM connectors, including HubSpot and Pipedrive, plus Zapier and Make through webhooks. A built-in email finder reduces the need for another enrichment subscription, and the app can process Sales Navigator links without requiring a separate Sales Navigator subscription.&lt;/p&gt;

&lt;p&gt;Desktop execution does mean the host needs to remain on during campaigns. For continuous operation, Linked Helper can run on a VPS; Web Version access lets you manage that remote instance in a browser. This provides a cloud-equivalent 24/7 workflow without transferring the session to Linked Helper's infrastructure.&lt;/p&gt;

&lt;p&gt;The review footprint is substantial: G2 is 4.5★ across 142 reviews, Capterra is 4.9★ across 252, and Trustpilot is 4.91★ across 431. Reviewers describe both account experience and value in unusually direct terms: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"It works just like a real human, and I haven't had any issues with my LinkedIn accounts since I started."&lt;br&gt;
Another reviewer wrote, "Super cost effective and great customer service."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The safety data needs context. Two of 825 reviews, or 0.24%, reported LinkedIn blocking or restriction incidents. That number is not proof of immunity, and it should not be treated as a score against cloud products. No tool eliminates the risk of LinkedIn restrictions; behavior, account history, targeting, and volume still matter. Linked Helper's advantage is architectural control over the session and network origin.&lt;/p&gt;

&lt;p&gt;The honest limitation is channel scope. Linked Helper is LinkedIn-first, so native non-LinkedIn email sequences require a dedicated tool — Instantly is the one we've separately reviewed and rated well for that pairing. If email is central to your workflow, pair the two rather than pretending one product must do everything.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Expandi: deeper branching, with vendor-cloud session custody
&lt;/h2&gt;

&lt;p&gt;Expandi runs in the cloud and supports conditional outreach, shared campaigns, LinkedIn messages, and email follow-up. It connects directly with HubSpot, Pipedrive, and Salesforce, making its branching automation the clearest convenience in this comparison.&lt;/p&gt;

&lt;p&gt;That convenience carries a much higher per-seat price: $99 per seat monthly or $79 billed annually, a 20.2% discount. Its public pricing advertised a 14-day trial, but a June 2026 signup test presented seven days, required a card, and therefore did not match the public offer.&lt;/p&gt;

&lt;p&gt;The more important implementation detail appears in the login connector. It reads the LinkedIn li_at session cookie and uploads it to app.expandi.io, which makes reuse from Expandi's cloud highly likely. In the live check, one assigned IP scored 100/100 in IPQualityScore for proxy and recent-abuse signals. That is an independent network-quality warning, not a LinkedIn enforcement decision.&lt;/p&gt;

&lt;p&gt;Reviews give credit to automation and support, but account-restriction reports also appear. One reviewer stated: "This software got me banned several times". A product absent from the inspected LinkedIn extension-detection list is not automatically safe; it simply means that particular detection surface was not observed.&lt;br&gt;
Expandi earns its place for branching workflow depth and always-on operation. Linked Helper's counter is simpler: local session custody and a far lower entry price, with VPS plus Web Version available when 24/7 access is required.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Salesflow: useful team reporting, but expensive at scale
&lt;/h2&gt;

&lt;p&gt;Salesflow combines LinkedIn and email outreach with multi-account administration, pipeline views, and performance reporting by representative. Teams that need rep-level visibility may value that operational layer, and the platform connects with HubSpot, Pipedrive, and Salesforce.&lt;/p&gt;

&lt;p&gt;Pricing is $99 per seat monthly, or a listed $69.30 monthly equivalent with annual billing, and has a 7-day trial. The lower 20-seat tier still totals roughly $6,712.80 per year, while built-in email finding, verification, and spintax are absent.&lt;/p&gt;

&lt;p&gt;Its reliability feedback deserves as much weight as the reporting features. One Capterra reviewer said, "The Salesflow dashboard is an operational nightmare. It's filled with bugs, constantly stops working." Another summarized the account consequence this way: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Least helpful was getting my accounts banned".&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The technical trade-off is equally concrete: Salesflow stores the LinkedIn session token in its cloud and uses reverse-engineered LinkedIn API calls. Its recorded default IP was also detected as a proxy. This does not establish that every account will face a restriction, but it does move session custody and network origin outside the operator's local machine.&lt;/p&gt;

&lt;p&gt;Salesflow's per-rep reporting is the real convenience. Against it, Linked Helper offers local or controlled-VPS execution, a built-in email finder, and a flat low starting price; its trade-off remains the lack of native non-LinkedIn email sequences.&lt;/p&gt;

&lt;h2&gt;
  
  
  More to Consider
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;HeyReach&lt;/strong&gt; costs $79/month, or $59/month billed annually—a 25.3% reduction and centralizes multiple LinkedIn accounts with sender rotation. In the inspected setup, It read the full LinkedIn cookie jar, including li_at and JSESSIONID, and sent it to api.heyreach.io, transferring session data to the vendor cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meet Alfred&lt;/strong&gt; is $59 per month or $29 per month billed annually, a 50% discount and puts LinkedIn, email, and multi-network outreach in one dashboard. Reliability is the catch: "Meet Alfred disconnects from LinkedIn at least once per day".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Waalaxy&lt;/strong&gt; begins at $42/month, or $20.50/month billed annually and offers prebuilt LinkedIn sequences with email-finder connections. Its extension ID is on LinkedIn's AED list, so installation is visible to LinkedIn's probe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Skylead&lt;/strong&gt; is $100/month or $83.33/month billed annually and combines branching LinkedIn, InMail, and email sequences with email discovery. In the June 2026 test, both accounts used HostRoyale IP 58.97.254.1, the same datacenter provider observed behind Dripify.&lt;/p&gt;

&lt;h2&gt;
  
  
  My conclusion
&lt;/h2&gt;

&lt;p&gt;Cloud-based platforms like Expandi, Salesflow, and Skylead offer the undeniable convenience of hands-off, always-on workflows and multi-channel email steps. However, that convenience comes at a steep premium ($42 to $100+/seat) and requires handing your live session cookies, credentials, and network routing to vendor server pools. For many growing outbound teams, sharing datacenter subnets or dealing with silent API shifts represents an unnecessary operational risk.&lt;/p&gt;

&lt;p&gt;If your priority is granular control, verifiable account safety, and predictable scaling costs, Linked Helper remains the most balanced alternative. By keeping the execution engine and li_at tokens strictly on local or private VPS hardware, it eliminates the third-party cookie-bridge vulnerability entirely—all while starting at a fraction of the cost ($15/mo). Pairing it with a dedicated cold email sender handles multi-channel needs without compromising your primary LinkedIn pipeline.&lt;/p&gt;

&lt;p&gt;Ultimately, match the tool to your risk tolerance: choose a hosted cloud platform if you want hands-off multi-channel management and are willing to pay for remote session handling, or choose an isolated desktop/VPS architecture if you want complete sovereignty over your accounts and outbound data.&lt;/p&gt;

</description>
      <category>linkedin</category>
      <category>saas</category>
      <category>automation</category>
      <category>productivity</category>
    </item>
    <item>
      <title>13 HeyReach Alternatives Compared: What Actually Matters for Your Budget in 2026</title>
      <dc:creator>Michael Harris</dc:creator>
      <pubDate>Fri, 28 Aug 2026 08:23:04 +0000</pubDate>
      <link>https://dev.to/michael_harris/13-heyreach-alternatives-compared-what-actually-matters-for-your-budget-in-2026-dl1</link>
      <guid>https://dev.to/michael_harris/13-heyreach-alternatives-compared-what-actually-matters-for-your-budget-in-2026-dl1</guid>
      <description>&lt;p&gt;Linked Helper stands out as the best HeyReach alternative by pairing sensible economics with full infrastructure control. Starting at just $15/mo ($8.25/mo on annual billing) with bulk discounts scaling to 50%—well below HeyReach’s $79/mo baseline—it unlocks advanced LinkedIn capabilities like dynamic spintax, message-level conditionals, and event or group outreach, all while keeping session custody strictly on your local hardware.&lt;/p&gt;

&lt;h2&gt;
  
  
  Top 3 HeyReach Alternatives: Side-by-Side Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Entry price&lt;/th&gt;
&lt;th&gt;Multi-account&lt;/th&gt;
&lt;th&gt;Multi-channel&lt;/th&gt;
&lt;th&gt;Conditional workflows&lt;/th&gt;
&lt;th&gt;Event/group engagement&lt;/th&gt;
&lt;th&gt;Free trial&lt;/th&gt;
&lt;th&gt;G2 rating&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Linked Helper&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$15/mo&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;LinkedIn only&lt;/td&gt;
&lt;td&gt;Conditional personalization (variable substitution)&lt;/td&gt;
&lt;td&gt;Yes (invites + group messaging)&lt;/td&gt;
&lt;td&gt;14-day free trial (no card)&lt;/td&gt;
&lt;td&gt;4.5★ (142)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Expandi&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$99/mo&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;LinkedIn + email&lt;/td&gt;
&lt;td&gt;Basic sequences&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;7 days with a card required&lt;/td&gt;
&lt;td&gt;4.1★ (98)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;La Growth Machine&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$60/mo&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;LinkedIn + email + X&lt;/td&gt;
&lt;td&gt;No conditional branching&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;4.6★ (51)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Linked Helper
&lt;/h2&gt;

&lt;p&gt;If budget is the first filter, Linked Helper clears it by a wide margin. Entry sits at $15/mo — or $8.25/mo billed annually — with volume discounts up to 50% that scale transparently as you add seats. AI and data credits come included with the license (more can be purchased separately), no per-seat add-ons buried in the checkout flow. A 14-day free trial ships without asking for a credit card.&lt;/p&gt;

&lt;p&gt;The application runs as a desktop client on Windows, macOS, and Ubuntu. That matters for more than preference: your LinkedIn session stays local, never uploaded to a vendor's servers. For teams that need around-the-clock operation without handing over session custody, the VPS + Web Version option delivers cloud-equivalent uptime while the credentials remain operator-controlled.&lt;/p&gt;

&lt;p&gt;Feature depth is where the price gap gets hard to justify elsewhere. Linked Helper is the only tool in this 13-brand set offering conditional message personalization (variable-presence substitution — if a scraped variable exists, message A is sent; otherwise, message B) alongside event invites, group-member messaging, automated endorsements, post likes and comments, AI message generation, spintax, and image/video personalization. Eleven CRM connectors plus Zapier and Make integrations round out the data side.&lt;/p&gt;

&lt;p&gt;The honest trade-off: there is no native email channel. If your outreach sequences require LinkedIn plus cold email in a single tool, you would pair Linked Helper with a dedicated email platform — still likely cheaper in total than most multichannel alternatives here.&lt;br&gt;
The tool has been around since 2016, counts 500,000+ users, and carries 825 reviews averaging 4.85 stars across platforms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Expandi
&lt;/h2&gt;

&lt;p&gt;Expandi enters at $99/mo ($79/mo billed annually) — nearly seven times Linked Helper's starting price. Agency pricing is available on request for ten or more seats, but there is no published volume-discount schedule to compare against.&lt;/p&gt;

&lt;p&gt;The platform runs cloud workspaces combining LinkedIn and email outreach with AI messaging, image/video personalization, and CRM connections. Architecture-wise, it uses a cookie-bridge model: our June 2026 connector review found it uploads the li_at session token to app.expandi.io. The browser extension is not on automated-extension-detection lists but is probeable and injected into LinkedIn pages. One test IP scored 100 on IPQS, which is worth noting for anyone tracking proxy reputation.&lt;/p&gt;

&lt;p&gt;The trial is listed as 14 days on the marketing site, but our signup observed 7 days with a card required. Across 331 reviews the tool averages 4.13 stars.&lt;/p&gt;

&lt;p&gt;For budget-conscious buyers, the calculus is straightforward: paying six to seven times more than Linked Helper gets you native email in the same tool but costs you session custody and the deeper LinkedIn actions — no event invites, no group engagement, no spintax.&lt;/p&gt;

&lt;h2&gt;
  
  
  La Growth Machine
&lt;/h2&gt;

&lt;p&gt;La Growth Machine prices at $60/mo ($50/mo billed annually) — roughly four times Linked Helper's entry. The multichannel pitch is genuine: LinkedIn, email, and X/Twitter sequences run from one builder, with AI message generation, voice notes, and 22 native integrations.&lt;/p&gt;

&lt;p&gt;The platform runs in the cloud, which means the LinkedIn session is stored vendor-side. No conditional if/then branching is documented in the workflow editor, and reviewers have flagged reliability: one noted that "campaigns systematically break and stop without warning." Across 102 reviews the tool averages 4.63 stars, with the highest marks going to the multichannel breadth rather than execution stability.&lt;/p&gt;

&lt;p&gt;For budget buyers weighing La Growth Machine against Linked Helper, the math favors pairing LH with a standalone email tool. You get conditional message personalization, event and group engagement, and spintax at a quarter of the entry price — and the email tool you add will likely specialize better than a bundled channel anyway.&lt;/p&gt;

&lt;h2&gt;
  
  
  More to Consider
&lt;/h2&gt;

&lt;p&gt;The remaining ten alternatives span a wide price range, and each carries a distinct trade-off against Linked Helper's $15/mo baseline:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dripify&lt;/strong&gt; ($59/mo, $39/mo annual) — cloud LinkedIn plus email with conditional workflows, but no published volume-discount schedule and vendor-cloud session custody.&lt;br&gt;
&lt;strong&gt;Waalaxy&lt;/strong&gt; ($42/mo, $20.50/mo annual) — extension-led with AI messaging, though no conditional branching or event/group actions; cookie-bridge uploads the session.&lt;br&gt;
&lt;strong&gt;Lemlist&lt;/strong&gt; ($79/mo) — multichannel email, LinkedIn, and cold-call coverage, but matches HeyReach's price point exactly; the extension is on automated-detection lists.&lt;br&gt;
&lt;strong&gt;Skylead&lt;/strong&gt; ($100/mo) — the most expensive entry in this set, cloud credential login, no conditional workflows.&lt;br&gt;
&lt;strong&gt;Salesflow&lt;/strong&gt; ($99/mo per seat) — volume tiers drop to $39.95 at 100+ seats, but the $99 entry is steep; no spintax or event/group engagement.&lt;br&gt;
&lt;strong&gt;Meet Alfred&lt;/strong&gt; ($59/mo, $29/mo annual) — the lowest annual price among cloud tools, though review signals split sharply: 3.2 stars on G2 (30 reviews) versus 4.73 on Trustpilot (884). Endorsements and event/group campaigns are available.&lt;br&gt;
&lt;strong&gt;PhantomBuster&lt;/strong&gt; ($69/mo) — scraping-first Phantoms/Flows model with a cookie-bridge approach; listed on automated-extension-detection databases.&lt;br&gt;
&lt;strong&gt;Octopus CRM&lt;/strong&gt; ($9.99/mo, $6.99/mo annual) — the cheapest raw entry in the set, but single-account only with no conditional workflows, no spintax, no AI messaging, and no event/group engagement; local-scrape extension on automated-detection lists.&lt;br&gt;
&lt;strong&gt;Dux-Soup&lt;/strong&gt; ($14.99/mo) — close to Linked Helper's price, local on Free/Pro/Turbo tiers but cookie-bridge on the Cloud plan; no conditional workflows, no spintax, no event/group.&lt;br&gt;
&lt;strong&gt;Closely&lt;/strong&gt; ($49/mo) — cloud LinkedIn plus email with credit-based quotas; no spintax or event/group engagement.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is the cheapest HeyReach alternative?&lt;/strong&gt; &lt;br&gt;
Linked Helper at $15/mo ($8.25/mo billed annually). Some browser extensions list lower monthly prices, but extension-level exposure and narrower workflow capabilities change the real value comparison once you factor in what you can actually automate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does Linked Helper run 24/7 like a cloud tool?&lt;/strong&gt;&lt;br&gt;
Yes — via VPS + Web Version. The session stays operator-controlled rather than being uploaded to a vendor's infrastructure, so you get continuous operation without the session-custody trade-off.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I use Linked Helper with cold email?&lt;/strong&gt;&lt;br&gt;
There is no native email channel. Pair it with a dedicated email tool for multichannel sequences — the combined cost will still undercut most all-in-one alternatives in this list.&lt;/p&gt;

</description>
      <category>linkedin</category>
      <category>security</category>
      <category>automation</category>
      <category>saas</category>
    </item>
    <item>
      <title>7 Closely Alternatives for LinkedIn Automation: What Actually Matters</title>
      <dc:creator>Michael Harris</dc:creator>
      <pubDate>Wed, 26 Aug 2026 12:08:00 +0000</pubDate>
      <link>https://dev.to/michael_harris/7-closely-alternatives-for-linkedin-automation-what-actually-matters-57ei</link>
      <guid>https://dev.to/michael_harris/7-closely-alternatives-for-linkedin-automation-what-actually-matters-57ei</guid>
      <description>&lt;p&gt;Quick answer: For teams leaving Closely because support has stalled or they no longer want cloud custody of their LinkedIn session, &lt;a href="https://www.linkedhelper.com/" rel="noopener noreferrer"&gt;Linked Helper&lt;/a&gt; is the best alternative. Its desktop design keeps that session away from vendor servers, while four support channels and a 262-article knowledge base provide more places to get help. It starts at $15/mo; Closely's entry plan is roughly $49/mo.&lt;/p&gt;

&lt;p&gt;Everything below is either a vendor-documented fact, a review-corpus count, or a first-hand check run in June–July 2026 (two LinkedIn accounts per cloud tool, registered from France, plus source-code teardowns of the extensions that ship publicly). Where a fact was not observable, the cell says so instead of guessing.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Entry price&lt;/th&gt;
&lt;th&gt;Architecture &amp;amp; session custody&lt;/th&gt;
&lt;th&gt;Support channels&lt;/th&gt;
&lt;th&gt;Free trial&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Linked Helper&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$15/mo ($8.25/mo on a 12-month license)&lt;/td&gt;
&lt;td&gt;Desktop standalone (Windows, macOS, Ubuntu) with its own browser engine; session stays local or on your VPS&lt;/td&gt;
&lt;td&gt;Website chat, in-app chat, in-app ticket, email, Facebook Messenger, WhatsApp&lt;/td&gt;
&lt;td&gt;14 days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Expandi&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$99/mo ($79/mo annual)&lt;/td&gt;
&lt;td&gt;Cloud; the official Connector extension copies the li_at session cookie to app.expandi.io&lt;/td&gt;
&lt;td&gt;Chat, email, phone + community&lt;/td&gt;
&lt;td&gt;7 days observed, card required (page advertises 14)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SalesRobot&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$59/mo ($39/mo annual) per LinkedIn account&lt;/td&gt;
&lt;td&gt;Cloud; default exit IP flagged, so safety depends on a clean custom proxy&lt;/td&gt;
&lt;td&gt;Email only, 24–48 h bucket&lt;/td&gt;
&lt;td&gt;14 days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dripify&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$59/mo ($39/mo annual)&lt;/td&gt;
&lt;td&gt;Cloud with credential login; the vendor creates and runs the LinkedIn session&lt;/td&gt;
&lt;td&gt;One low-transparency surface: documented email, chat reported inconsistently&lt;/td&gt;
&lt;td&gt;7 days, no card&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Waalaxy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$42/mo ($20.50/mo annual)&lt;/td&gt;
&lt;td&gt;Cloud-bridge extension; the LinkedIn cookie jar is posted to Waalaxy's AWS cloud&lt;/td&gt;
&lt;td&gt;Live chat only (~2 days on the entry tier), no forum&lt;/td&gt;
&lt;td&gt;14 days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Meet Alfred&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$59/mo ($29/mo annual)&lt;/td&gt;
&lt;td&gt;AWS-hosted cloud with credential login&lt;/td&gt;
&lt;td&gt;Chat and email; vendor claims 24/7&lt;/td&gt;
&lt;td&gt;7 days observed (vendor record says 14)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Salesflow&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$99/mo ($69.30/mo annual)&lt;/td&gt;
&lt;td&gt;Vendor-hosted console (desk-sourced; no hands-on test)&lt;/td&gt;
&lt;td&gt;Live chat only&lt;/td&gt;
&lt;td&gt;7 days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Closely&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$49/mo&lt;/td&gt;
&lt;td&gt;Cloud; account operated from vendor infrastructure&lt;/td&gt;
&lt;td&gt;Email (single documented channel)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What the first-hand tests actually found
&lt;/h2&gt;

&lt;p&gt;Two things were checked: what a cloud tool presents to LinkedIn at sign-up (two accounts each, registered from France, scored with IPQualityScore), and what a shipped browser extension does in its own source code. Methodology reference: Linked Helper's LinkedIn automation security study.&lt;/p&gt;

&lt;p&gt;Expandi (June 2026). Credentials login; 96 locations selectable, which controls country, not IP reputation; no BYO proxy in the trial flow. Account 1 landed on 91.165.182.32 (Free SAS, FR) scoring fraud 100/100, proxy yes, recent abuse yes, high abuse velocity — residential, but high-risk. Account 2, created identically, landed on an Orange France IPv6 line scoring 0/100. Same flow, opposite verdicts, and you only learn which one you got after the handoff. Both accounts reported an identical Chrome/macOS fingerprint, so the two accounts were not separated at the browser layer either.&lt;/p&gt;

&lt;p&gt;Dripify (June 2026). Credentials login, no location choice, no BYO proxy, no proxy-quality checker. Both accounts landed on HostRoyale datacenter addresses in Paris — 209.20.164.225 and 209.20.164.94, the same /24 and the same provider — each scoring fraud 94/100, proxy yes, VPN yes, connection type Data Center. Dripify does route each LinkedIn action through a dedicated IP matching the account's country, and the test bore that out (French accounts, French IPs), but it is still an address that differs from your home network and reads as rented infrastructure.&lt;/p&gt;

&lt;p&gt;Meet Alfred (July 2026). Credentials login, 247 locations, BYO proxy supported but without a quality checker. Both accounts scored a clean 0/100 fraud, yet one exit was a Data Center line and the other Residential — same signup path, different origin class — and both carried a manual spam-reputation note despite the clean score. Both ran through the same ISP (WS Telecom), so the footprint still clusters on one provider.&lt;/p&gt;

&lt;p&gt;Extension teardowns. Only two tools here ship a public LinkedIn extension, and their code says more than any feature page:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Checked in the shipped source&lt;/th&gt;
&lt;th&gt;Expandi Connector (June 2026)&lt;/th&gt;
&lt;th&gt;Waalaxy (July 2026)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reads the LinkedIn session cookie (&lt;code&gt;li_at&lt;/code&gt;)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes — copied to &lt;code&gt;app.expandi.io&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Yes — the full cookie jar (&lt;code&gt;li_at&lt;/code&gt; + &lt;code&gt;JSESSIONID&lt;/code&gt;) posted to &lt;code&gt;stargate.prod.aws.waalaxy.com&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Direct LinkedIn (Voyager) API calls&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes, with credentials&lt;/td&gt;
&lt;td&gt;Yes, with &lt;code&gt;x-restli-protocol-version: 2.0.0&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Injects code into LinkedIn's DOM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes (reads profile/session context)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Fires synthetic (&lt;code&gt;isTrusted=false&lt;/code&gt;) clicks&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No — execution is cloud-side&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Blocks LinkedIn telemetry&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes — strips the &lt;code&gt;x-cki&lt;/code&gt; header, references &lt;code&gt;li/track&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Daily cap enforced in code&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;None found&lt;/td&gt;
&lt;td&gt;None found&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;On LinkedIn's AED probe list&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Not in the June 2026 snapshot&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Note: AED is LinkedIn's Active Extension Detection probe list — a hardcoded set of extension IDs LinkedIn checks for on page visits, meaning installation is visible before a campaign runs. Absence from the list isn't safety; the list grows. The Waalaxy teardown also found captcha auto-solving hooks for 2captcha, Capsolver, and SolveCaptcha, and the Expandi connector payload carries the account holder's name, headline, public identifier, entity URN, email, and user agent.&lt;br&gt;
Whoever holds li_at can act as your account without your password. That is the whole custody argument in one sentence.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Linked Helper: Maximum Session Custody and Support
&lt;/h2&gt;

&lt;p&gt;Linked Helper is the top Closely alternative when you need direct support and full control over account security. Instead of uploading session tokens to a vendor cloud, it runs as a standalone desktop app (Windows, macOS, Ubuntu) inside its own browser engine. For 24/7 cloud-like execution, pair it with a VPS and use the login-based Web Version.&lt;/p&gt;

&lt;p&gt;Technical Behavior &amp;amp; Safety: It interacts with LinkedIn via emulated clicks, mouse movements, and randomized delays rather than risky internal API calls. Limits are smart defaults rather than rigid caps (randomized to avoid static patterns). Each account supports dedicated HTTP/HTTPS/SOCKS5 IPv4 proxies with a pre-connection line checker.&lt;/p&gt;

&lt;p&gt;Lead Sourcing &amp;amp; Enrichment: Supports 13 LinkedIn source types (Sales Navigator lists, groups, post engagement, events) versus 2–3 on Dripify or Expandi. Includes Spintax, built-in AI copywriting (30/day), and database-level profile enrichment that saves in-app actions.&lt;/p&gt;

&lt;p&gt;Multichannel Boundaries: It lacks native email sequences and visual conditional branching (its IF-THEN-ELSE operator handles dynamic text insertion, not branch routing). To build multichannel flows, it connects with Instantly, Snov.io, or webhooks.&lt;/p&gt;

&lt;p&gt;Pricing &amp;amp; Volume Scaling: Starts at $15/mo (or $8.25/mo annually). Bulk discounts stack with annual plans—running 20 Standard licenses costs $1,584/year (compared to $18,960–$23,760/year on Expandi). Includes a 14-day free trial.&lt;/p&gt;

&lt;p&gt;Support &amp;amp; Reputation: Directly solves Closely’s support gap via live chat, in-app tickets, WhatsApp, email, and Facebook Messenger (median response time: ~4 minutes). Holds strong public ratings (4.5★ G2, 4.9★ Capterra, 4.9★ Trustpilot).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"It works just like a real human, and I haven't had any issues with my LinkedIn accounts since I started. I've had some bad experiences with other automation tools that got me blocked."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  2. Expandi: Polished Onboarding with Cloud-Custody Caveats
&lt;/h2&gt;

&lt;p&gt;Expandi excels at guided setup, offering white-glove onboarding calls alongside chat, email, and phone support, backed by native integrations for HubSpot, Pipedrive, Salesforce, and webhooks.ё&lt;/p&gt;

&lt;p&gt;Architecture &amp;amp; IP Control: The official Connector extension uploads the li_at session cookie directly to Expandi's cloud. While it offers 96 country locations at setup, it provides no visibility into exit-IP quality, and the trial flow lacks a bring-your-own-proxy (BYOP) option.&lt;/p&gt;

&lt;p&gt;Messaging &amp;amp; AI Limits: Personalization relies on dynamic placeholders rather than true Spintax. Built-in AI features are strictly capped at 15 credits per account per day across all active campaigns (resets daily, no rollover).&lt;/p&gt;

&lt;p&gt;Pricing &amp;amp; Free Trial: Starts at $99/mo (or $79/mo annually). While the landing page advertises a 14-day trial, the actual signup observed provides 7 days and requires a credit card upfront.&lt;/p&gt;

&lt;p&gt;Safety Signals &amp;amp; Reviews: Hands-on onboarding does not eliminate account risks—analysis revealed 42 user reports citing safety detection and account restrictions, alongside billing complaints such as post-cancellation charges.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Within just a few hours of connecting Expandi, my account was frozen."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Expandi suits teams prioritizing CRM-ready workflows and guided onboarding. However, if your exit from Closely is motivated by support reliability and account safety, Linked Helper provides broader support channels without uploading session cookies to a vendor cloud.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. SalesRobot: Broader Channel Coverage, Thinner Support Surface
&lt;/h2&gt;

&lt;p&gt;SalesRobot combines LinkedIn outreach, email sequences, bulk email, Sales Navigator imports, and native CRM integrations (Copper, GoHighLevel, HubSpot, Pipedrive, Salesforce, Zoho) into a single cloud dashboard. It also advertises an AI Appointment Setter Agent alongside AI voice and video notes.&lt;/p&gt;

&lt;p&gt;Architecture &amp;amp; IP Exposure: In a desk-sourced safety audit, the platform's default exit IP was flagged as "Detected as proxy — unsafe". The vendor’s documentation explicitly advises using a custom proxy rather than the default IP, meaning account safety relies on you sourcing and vetting clean proxies.&lt;/p&gt;

&lt;p&gt;Sourcing &amp;amp; Personalization Limits: It supports only 2 LinkedIn source types (compared to 13 in Linked Helper) and shows no documented Spintax support, requiring alternative methods to keep messages unique.&lt;/p&gt;

&lt;p&gt;Team Governance &amp;amp; Plans: Key multi-seat features—such as anti-duplication, activity limits, custom role permissions, and multi-user workspaces—are gated behind the top-tier plan (unlike Linked Helper, where workspaces are standard on all licenses).&lt;/p&gt;

&lt;p&gt;Pricing &amp;amp; Free Trial: Starts at $59/mo (or $39/mo annually) per LinkedIn account, backed by a 14-day free trial.&lt;/p&gt;

&lt;p&gt;Support Channels &amp;amp; Reviews: Formal support is limited to a single email queue with a 24–48 hour turnaround window and no 24/7 coverage. While G2 features high praise for support responsiveness, Trustpilot has a small 9-review footprint dominated by billing and reliability complaints regarding AppSumo lifetime deals and V1-to-V2 migrations.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Their customer support is the best I've ever experienced."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  More to Consider
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Dripify&lt;/strong&gt; — A well-rated cloud option at $59/mo ($39/mo annual, 7-day no-card trial). The trade is custody plus network: credential login runs the session on vendor infrastructure, every action leaves through an external IP that matches your account's country but differs from your home IP, both test accounts sat on the same flagged datacenter /24, and there is no custom-proxy option to correct it. Its named CRM connectors mostly require a paid Zapier or Make hop, and its 4.08 support sub-rating is Capterra's lowest sub-score.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Waalaxy&lt;/strong&gt; — At $42/mo ($20.50/mo annual) it is the cheapest cloud option here, and live chat is fast on paper. Read the entry tier before buying: roughly 2-day support responses, the inbox delivered as a separate plugin, and a 300 invites/month cap that sits below LinkedIn's own 400–800 ceiling. Architecturally it is the most visible tool in this set — cookie jar uploaded to AWS, synthetic clicks, telemetry stripping, and a confirmed spot on LinkedIn's AED probe list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meet Alfred&lt;/strong&gt; — The $59/mo ($29/mo annual) AWS-hosted workspace adds X/Twitter alongside LinkedIn and email, and CRM handoff runs through Zapier and webhooks. Ratings divide sharply between G2 at 3.3★ and Trustpilot at 4.73★; 49 reviews carry account-restriction, safety-detection, or extreme-dissatisfaction signals. Its if-then logic applies to message composition, not workflow branching, and the Pro license lacks the team features for managing multiple LinkedIn accounts, which pushes teams onto the pricier tier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Salesflow&lt;/strong&gt; — Its $99/mo ($69.30/mo annual) vendor-hosted console combines LinkedIn and email for teams and offers an opt-in custom proxy, but the default path is proxy-flagged and the corpus is dated: 178 lifetime reviews and zero rated reviews in the trailing six months. Capterra's support sub-rating is 4.59 even though separate reviewers called support "non-existing."&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is the best low-cost alternative to Closely?&lt;/strong&gt;&lt;br&gt;
Linked Helper, at $15/mo — $8.25/mo on a 12-month license, with volume discounts starting at 10 seats that stack on top of that — against Closely's roughly $49/mo baseline. The point isn't only price: paying less here doesn't require handing a cloud vendor custody of your LinkedIn session.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which Closely alternative has the best support?&lt;/strong&gt;&lt;br&gt;
Linked Helper. Six ways in (website chat, in-app chat, in-app ticket, email, Facebook Messenger, WhatsApp), a 262-article knowledge base, an active community forum, and a median first reply around four minutes over the last twelve months. That mix matters when stalled replies, refund friction, or setup trouble are what pushed you to switch.&lt;/p&gt;

&lt;p&gt;**Which of these tools store my LinkedIn session cookie?&lt;br&gt;
**Every cloud tool here operates your account from its own infrastructure. Two ship extensions whose source code shows the transfer explicitly: Expandi's Connector copies li_at to app.expandi.io, and Waalaxy posts the full cookie jar (li_at + JSESSIONID) to stargate.prod.aws.waalaxy.com. Whoever holds those cookies can act as the account without the password. Linked Helper's desktop model keeps the session in the local or VPS environment you control.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does the exit IP really matter that much?&lt;/strong&gt;&lt;br&gt;
It's one signal among several, not a switch. Most genuine LinkedIn users log in from residential or mobile networks, so a personal account operating from a rented datacenter line looks different — which is why the Dripify result (both accounts on one flagged HostRoyale /24) reads differently from Meet Alfred's clean-scoring but datacenter-classified exit. IPQualityScore is an independent IP-quality signal, not LinkedIn's enforcement verdict.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I bring my own proxy?&lt;/strong&gt;&lt;br&gt;
It varies, and that's the useful discriminator. Linked Helper supports a per-account proxy (HTTP/HTTPS/SOCKS/SOCKS5 IPv4) with a built-in quality checker. SalesRobot, Meet Alfred, and Salesflow allow one, but none ships a checker and Meet Alfred's is off by default. Dripify and Waalaxy don't offer one, and Expandi didn't expose it in the trial add-account flow.&lt;/p&gt;

&lt;p&gt;**What is AED, and should I care?&lt;br&gt;
**Active Extension Detection is LinkedIn's hardcoded list of extension IDs it probes for when you load a page — so a listed extension is visible before your first campaign action. Waalaxy is on the June/July 2026 list; Expandi's Connector was not in that snapshot, which is a timestamp, not a guarantee. Tools with no public extension (Linked Helper, Dripify, Meet Alfred, Salesflow, Closely) have nothing to probe, though for the cloud ones the session-custody question remains.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does spintax still matter if a tool has AI personalization?&lt;/strong&gt;&lt;br&gt;
They solve different problems. AI generation writes the message; spintax varies the wording of a message you've already approved, across every send. Of the tools here, only Linked Helper documents real spintax — Expandi offers dynamic placeholders, and the rest show no spintax evidence — so on the others, message uniqueness depends entirely on AI output or manual variants.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I switch off Closely without losing data?&lt;/strong&gt;&lt;br&gt;
Export contacts, campaign history, and CRM-linked records before you cancel. Rebuild campaigns from the cleaned list, reconnect CRM fields, and restart with conservative limits — ramping up gradually, roughly five actions a day more each week, since a sudden spike is itself a trigger. Don't run Closely and its replacement on the same LinkedIn account at the same time.&lt;/p&gt;

</description>
      <category>linkedin</category>
      <category>saas</category>
      <category>automation</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Best Waalaxy Alternatives in 2026: Comparing 3 LinkedIn Automation Tools</title>
      <dc:creator>Michael Harris</dc:creator>
      <pubDate>Fri, 21 Aug 2026 11:36:00 +0000</pubDate>
      <link>https://dev.to/michael_harris/best-waalaxy-alternatives-in-2026-comparing-3-linkedin-automation-tools-35i0</link>
      <guid>https://dev.to/michael_harris/best-waalaxy-alternatives-in-2026-comparing-3-linkedin-automation-tools-35i0</guid>
      <description>&lt;p&gt;Quick answer: &lt;a href="https://www.linkedhelper.com/" rel="noopener noreferrer"&gt;Linked Helper&lt;/a&gt; is our top pick among Waalaxy alternatives because its desktop architecture keeps the LinkedIn session on your machine or VPS — your session token is never uploaded to vendor servers. It starts at $15/mo with a 14-day free trial and pairs 13 LinkedIn data sources with nested IF-THEN-ELSE workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Top 3 Waalaxy Alternatives: Key Specs &amp;amp; Safety Compared
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;th&gt;Multi-channel&lt;/th&gt;
&lt;th&gt;Price (mo)&lt;/th&gt;
&lt;th&gt;G2 rating&lt;/th&gt;
&lt;th&gt;Architecture&lt;/th&gt;
&lt;th&gt;Vendor stores session?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Linked Helper&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Workflow depth + session safety&lt;/td&gt;
&lt;td&gt;LinkedIn only (pair with email tool)&lt;/td&gt;
&lt;td&gt;$15/mo&lt;/td&gt;
&lt;td&gt;4.5★ (142)&lt;/td&gt;
&lt;td&gt;Desktop&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Skylead&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;LinkedIn + email in one cloud dashboard&lt;/td&gt;
&lt;td&gt;LinkedIn + email&lt;/td&gt;
&lt;td&gt;$100/mo&lt;/td&gt;
&lt;td&gt;4.5★ (125)&lt;/td&gt;
&lt;td&gt;Cloud&lt;/td&gt;
&lt;td&gt;Yes (credential login)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Closely&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Budget cloud outreach with CRM integrations&lt;/td&gt;
&lt;td&gt;LinkedIn + email&lt;/td&gt;
&lt;td&gt;$49/mo&lt;/td&gt;
&lt;td&gt;4.6★ (192)&lt;/td&gt;
&lt;td&gt;Cloud&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Linked Helper
&lt;/h2&gt;

&lt;p&gt;Linked Helper runs as a desktop application on your own machine. That single architectural decision means your LinkedIn session token stays on hardware you control — it never gets uploaded to a vendor's cloud infrastructure. If you run it on a VPS with the Web Version, you get cloud-equivalent 24/7 operation without handing session custody to a third party. This is the fundamental difference from every cloud-based Waalaxy alternative: the session never leaves your environment.&lt;/p&gt;

&lt;p&gt;Beyond session handling, the workflow engine goes deep. You get nested IF-THEN-ELSE message templates, spintax for variation, and AI-powered personalization. The tool pulls from 13 LinkedIn data sources — profiles, company pages, post engagers, event attendees, group members, and more — which gives you substantially more targeting surface than Waalaxy's three-source model. A built-in CRM sits alongside 11 direct CRM connectors covering HubSpot, Salesforce, Pipedrive, and others, plus Zapier and Make via webhooks. The Capterra community rates it 4.9★ (252), reflecting strong satisfaction among long-term users.&lt;/p&gt;

&lt;p&gt;Pricing starts at $15/mo ($8.25/mo on an annual plan) with a 14-day free trial. The platform has served 500,000+ users since 2016, making it one of the longest-running tools in the LinkedIn automation space. Per-account HTTP/HTTPS/SOCKS proxy support with a built-in proxy checker rounds out the safety picture — no shared extension ID, no code injected into LinkedIn pages. G2 reviewers rate it 4.5★ (142). The AED (Authorized Extension Developer) exposure rate sits at 0.24% — functionally negligible because the tool operates outside the browser entirely.&lt;/p&gt;

&lt;p&gt;The bottom line: no native email sequences. You need a separate email tool if multichannel outreach matters. The setup curve is also steeper than simpler alternatives. But if LinkedIn workflow depth and session safety are what you optimize for, nothing else in this comparison matches it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Skylead
&lt;/h2&gt;

&lt;p&gt;Skylead combines LinkedIn and email outreach in a single cloud platform for $100/mo with a 7-day trial (card required). It handles the LinkedIn session through credential login — the vendor logs into LinkedIn from its own servers, which means your session lives in vendor-cloud custody. There is no public extension involved, so AED listing is not applicable.&lt;/p&gt;

&lt;p&gt;On the proxy side, Skylead offers custom proxy support across 91 locations with timezone controls. But a June 2026 test surfaced something worth noting: two test accounts received the same HostRoyale datacenter IP (58.97.254.1), which returned an IPQS fraud score of 100 with proxy/VPN and recent-abuse flags. That same hosting provider shows up in Dripify's and We-Connect's infrastructure as well.&lt;/p&gt;

&lt;p&gt;Functionally, Skylead pulls from 3 LinkedIn scrape sources and supports spintax for message variation. What it lacks is conditional branching — no if-then logic in campaign sequences, which limits how precisely you can route prospects based on their behavior. G2 reviewers rate it 4.5★ (125), and the Capterra review volume is thinner at 4.8 stars from 17 reviews.&lt;/p&gt;

&lt;p&gt;The bottom line: Skylead is a capable multichannel tool, but the $100/mo entry point, vendor-cloud session custody, and the shared-datacenter IP situation are all factors to weigh against simpler or more privacy-conscious alternatives.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closely
&lt;/h2&gt;

&lt;p&gt;Closely offers cloud-based LinkedIn and cold-email outreach starting at $49/mo ($29/mo on an annual plan) with a 14-day trial. Founded in 2021 and based in Cyprus, it stores your LinkedIn session token on its own infrastructure — no option to bring your own proxy.&lt;/p&gt;

&lt;p&gt;The platform includes AI-driven personalization, InMail credit protection, and a built-in CRM with five native integrations (GoHighLevel, HubSpot, Pipedrive, Salesforce, Zoho). It draws from roughly two LinkedIn data sources — search and Sales Navigator — which limits targeting flexibility compared to tools with broader data access.&lt;/p&gt;

&lt;p&gt;Review sentiment tells a split story. G2 users rate Closely at 4.6★ (192), while Trustpilot sits at 3.57★ (75). That gap is notable — Trustpilot reviewers have flagged unauthorized card charges and accounts getting restricted after connecting the tool.&lt;/p&gt;

&lt;p&gt;The bottom line: vendor-held session with no custom proxy option, and only about two data sources. Closely works as a simpler, lower-cost cloud alternative, but the Trustpilot pattern deserves attention before committing.&lt;/p&gt;

&lt;h2&gt;
  
  
  More to Consider
&lt;/h2&gt;

&lt;p&gt;These tools round out the Waalaxy alternatives landscape, each with distinct trade-offs. &lt;strong&gt;La Growth Machine&lt;/strong&gt; ($60/mo) handles LinkedIn, email, and Twitter/X multichannel, though it runs on vendor-cloud sessions and users have reported reliability incidents. &lt;strong&gt;Expandi&lt;/strong&gt; ($99/mo) brings conditional workflows and guided onboarding, but its cookie-bridge extension uploads your session. &lt;strong&gt;Lemlist&lt;/strong&gt; ($79/mo) leads with email-first multichannel and sits on LinkedIn's AED list. &lt;strong&gt;Dux-Soup&lt;/strong&gt; ($14.99/mo) runs locally on its Free/Turbo/Pro tiers, but Cloud Dux uploads your session and the extension is AED-listed. &lt;strong&gt;Dripify&lt;/strong&gt; ($59/mo) uses credential login through the same HostRoyale provider as Skylead, with an IPQS score of 94. &lt;strong&gt;PhantomBuster&lt;/strong&gt; ($69/mo) handles recipe-based scraping via a cookie-bridge extension, also AED-listed. &lt;strong&gt;Salesflow&lt;/strong&gt; ($99/mo) targets agencies with multi-account management and vendor-cloud sessions. &lt;strong&gt;Meet Alfred&lt;/strong&gt; ($59/mo) uses credential login and shows a striking platform split — G2 3.2 stars versus Trustpilot 4.73 stars. &lt;strong&gt;Octopus CRM&lt;/strong&gt; ($9.99/mo) is the cheapest option with a local extension, but it's AED-listed and offers no conditional logic. HeyReach ($79/mo) specializes in multi-sender agency rotation via cookie-bridge, with IPQS scores of 100. SalesRobot ($59/mo) pairs conditional workflows with AI but runs on vendor-cloud infrastructure with only two data sources.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Why look for an alternative to Waalaxy?&lt;/strong&gt;&lt;br&gt;
While Waalaxy is popular for its intuitive interface, many teams seek alternatives due to its browser-extension detection risks (AED listing), the upload of full session cookies to vendor servers in cloud mode, and per-seat pricing that multiplies software costs as your team grows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I run 24/7 campaigns on desktop tools without uploading my session to the cloud?&lt;/strong&gt;&lt;br&gt;
Yes. Desktop engines like Linked Helper can be deployed on a private Virtual Private Server (VPS) and managed via a Web Version interface. This setup delivers 24/7 background execution while keeping the session token strictly isolated on your own server rather than on shared vendor infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is it safe to use LinkedIn automation tools in 2026?&lt;/strong&gt;&lt;br&gt;
No tool eliminates restriction risk entirely. What matters is how the tool handles your session, what IP addresses LinkedIn sees, and how much control you have over sending volume. Desktop tools that keep the session on your hardware avoid the biggest single risk factor — handing your credentials or session token to a third-party cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the difference between cloud, extension, and desktop LinkedIn automation?&lt;/strong&gt;&lt;br&gt;
The key distinction is session custody. Cloud tools log in with your credentials or upload your session cookie to vendor servers. Extensions run in your browser but may inject code into LinkedIn pages or appear on LinkedIn's Authorized Extension Developer list. Desktop applications operate outside the browser entirely — the session stays on your machine or VPS, and no extension footprint is visible to LinkedIn.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Linked Helper is our recommendation for teams that want LinkedIn workflow depth without giving up session control. The desktop architecture, 13 LinkedIn data sources, and $15/mo starting price make it the strongest overall pick in this comparison. &lt;a href="https://www.linkedhelper.com/" rel="noopener noreferrer"&gt;Try the 14-day free trial&lt;/a&gt; to see if it fits your workflow.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>linkedin</category>
      <category>saas</category>
      <category>automation</category>
      <category>productivity</category>
    </item>
    <item>
      <title>5 LinkedIn Automation Tools Compared for Agencies (2026)</title>
      <dc:creator>Michael Harris</dc:creator>
      <pubDate>Wed, 19 Aug 2026 12:02:57 +0000</pubDate>
      <link>https://dev.to/michael_harris/5-linkedin-automation-tools-compared-for-agencies-2026-21d6</link>
      <guid>https://dev.to/michael_harris/5-linkedin-automation-tools-compared-for-agencies-2026-21d6</guid>
      <description>&lt;p&gt;Quick answer: On native agency machinery, HeyReach's client workspaces and We-Connect's reseller white-label go deepest in this set, and Linked Helper does not match them there — its white-label is logo-and-name masking and its client isolation is a licensed Workspace per client rather than a native container. Where &lt;a href="https://www.linkedhelper.com/" rel="noopener noreferrer"&gt;Linked Helper&lt;/a&gt; does come out ahead is the other half of the decision: a per-account license with no per-seat tax ($240/mo in license at 20 accounts, around $460/mo once you add the VPS and proxies you run yourself) and a client LinkedIn session that stays on infrastructure the agency controls instead of a vendor cloud.&lt;/p&gt;

&lt;p&gt;Agency tooling gets shopped on price and operated on architecture. What decides whether a 20-account roster is pleasant or miserable is structural: whether one client's data is walled off from another's, whether you can put your own name on the product, whether one person can triage every client's replies from one screen, and whose servers each client's LinkedIn session sits on.&lt;/p&gt;

&lt;p&gt;Five tools below, from a larger comparison published by Linked Helper. Strength first, sourced drawback second, nothing scored or totalled — a cost column and a capability column measure different things.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;20-account cost / mo&lt;/th&gt;
&lt;th&gt;Per-seat tax?&lt;/th&gt;
&lt;th&gt;White-label&lt;/th&gt;
&lt;th&gt;Native client isolation&lt;/th&gt;
&lt;th&gt;Where the LinkedIn session lives&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Linked Helper&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;≈$460/mo est., month-to-month (license $240 vendor-quoted + self-hosted infra)&lt;/td&gt;
&lt;td&gt;No (per account; free team/client seats)&lt;/td&gt;
&lt;td&gt;Limited (logo/name only, no reseller)&lt;/td&gt;
&lt;td&gt;Workaround (licensed Workspace per client)&lt;/td&gt;
&lt;td&gt;Self-hosted (agency machine / VPS, local storage)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;HeyReach&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$999/mo month-to-month (Micro Agency, 25 senders; vendor-quoted) + BYO proxy &amp;amp; top-up credits&lt;/td&gt;
&lt;td&gt;No (per sender, not per user; free team/clients)&lt;/td&gt;
&lt;td&gt;Yes — 1 included on Agency (support-set)&lt;/td&gt;
&lt;td&gt;Yes — native client workspaces&lt;/td&gt;
&lt;td&gt;Vendor cloud (new login session per account)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;We-Connect&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~$1,180–1,580/mo (derived floor at the $59 annual seat price; Agency tier "Custom")&lt;/td&gt;
&lt;td&gt;No — free non-connecting members&lt;/td&gt;
&lt;td&gt;Yes (paid reseller program)&lt;/td&gt;
&lt;td&gt;Partial (permissions; native only via White Label)&lt;/td&gt;
&lt;td&gt;Vendor cloud (US datacenters)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Salesflow&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~$559–799/mo (derived; $799 month-to-month, $559 on a 12-month term)&lt;/td&gt;
&lt;td&gt;No — but no free managers&lt;/td&gt;
&lt;td&gt;Full, own domain (Pro 20+)&lt;/td&gt;
&lt;td&gt;Permissions-based (White-Label)&lt;/td&gt;
&lt;td&gt;Vendor cloud (login+password)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Closely&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~$720/mo (derived; month-to-month, per-account tiers)&lt;/td&gt;
&lt;td&gt;No — per account&lt;/td&gt;
&lt;td&gt;Yes — all tiers&lt;/td&gt;
&lt;td&gt;Yes — Client Access (manual)&lt;/td&gt;
&lt;td&gt;Vendor cloud; no BYO proxy&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Cost cells and capability cells are shown side by side and never summed into a score; totals marked derived are arithmetic off a quoted per-account price, and Linked Helper's total is real-TCO with the self-hosted operating portion estimated. The rows do not share one billing basis — each cell states whether it is a month-to-month figure or an annual-rate equivalent — so read them as monthly outlay, not like-for-like commitment terms.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Linked Helper: shallow on native agency features, hard to beat on cost and custody&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Linked Helper published the comparison this piece is drawn from, so start with the part that doesn't flatter it. On native agency machinery it is not the leader. Its own &lt;a href="https://support.linkedhelper.com/hc/en-us/articles/16428998472594-Do-you-have-White-Label-affiliate-referral-programs" rel="noopener noreferrer"&gt;support docs&lt;/a&gt; say "there is no fully fledged White Label program where you can resell Linked Helper at your own price" — what exists is logo-and-name masking. Client isolation is a separately licensed Workspace per client, not a native multi-tenant container. And the feature list has real holes for fleet operators: no sender rotation, no unified inbox across accounts, no dedicated CSM, and no public API. On that depth, HeyReach and We-Connect go further.&lt;/p&gt;

&lt;p&gt;It leads on the other two axes. Session custody first: a desktop app running on your own machine or a rented VPS, campaign data in local storage by default (cloud storage is a paid tier) — in the vendor's own product-page wording, "Desktop app, not a Chrome extension. No code injected into the LinkedIn page". Each client's session, and the user-provided proxy pinned to it, stays on infrastructure you control instead of a vendor's cloud; there is also a login-based Web Version alongside the desktop app for teams that want cloud-equivalent access.&lt;/p&gt;

&lt;p&gt;Then cost. Licensing is per account, not per human: "1 license = 1 LinkedIn account", and &lt;a href="https://support.linkedhelper.com/hc/en-us/articles/360016568719-Quick-workspace-setup" rel="noopener noreferrer"&gt;workspace members, managers and view-only client guests are unbilled&lt;/a&gt; because "the first workspace takes an unlimited amount of users". Standard licenses list at "$15/mo each", and a 20-49-license order takes the &lt;a href="https://support.linkedhelper.com/hc/en-us/articles/360016768020-Licensing-Standard-and-PRO-licenses-Pricing-and-discounts" rel="noopener noreferrer"&gt;bulk discount&lt;/a&gt; tier "20 - 49 licenses - 20%" — 20 x $15 x 0.80 = $240/mo in license, or "$12 per account", on month-to-month billing. A duration discount stacks on top of that volume band rather than replacing it: prepay twelve months and a &lt;a href="https://www.linkedhelper.com/pricing" rel="noopener noreferrer"&gt;Standard license&lt;/a&gt; works out at $8.25/mo ($99 charged once, -45%), while the volume ladder itself runs to -50% at higher licence counts.&lt;/p&gt;

&lt;p&gt;The boundary belongs in the same breath: round-the-clock operation needs a server the vendor doesn't sell, and "IP addresses must be purchased separately from any other third-party provider", so proxies are on you too. Fold in market-rate VPS and proxies and a 20-account fleet lands near "$460/mo (estimated)" — the license portion is vendor-quoted, the full self-hosted operating total is a market-assumption estimate rather than a vendor figure. Fleet management runs through Workspaces with granular Owner/Admin/Member/Guest roles, "11 native CRM integrations" plus webhooks, and a per-account Inbox with tags and notes — per account, the gap named above. One reviewer's operating note captures the trade-off: "the process is interrupted if I close the program", which is why teams move it onto a VPS they provision themselves.&lt;/p&gt;

&lt;p&gt;Net of all that: the lowest real per-account cost at 20 accounts, no seat tax, and a session the agency holds — set against a shallower native agency-feature surface and a self-hosted burden it carries itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;HeyReach: the deepest native client tooling in this set&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Most products here started as solo tools with team features grafted on later; HeyReach didn't, and it shows where agency work breaks. Its agency page states the container model in one line — "Separate workspaces for every client." — and attaches a specific promise to it: "Isolated data, controlled access, clean ops." That's an actual multi-tenant boundary, not a permissions veneer over one shared account list.&lt;/p&gt;

&lt;p&gt;Two capabilities sit on top of it. Sender rotation isn't something you wire up per campaign; per HeyReach's &lt;a href="https://help.heyreach.io/en/articles/9897768-multiple-linkedin-senders-on-one-campaign-sender-rotation" rel="noopener noreferrer"&gt;help center&lt;/a&gt;, "HeyReach is built with this feature by default.", so a campaign spreads across a client's fleet from the moment it starts. And Master View hands one operator "one unified dashboard and Unibox" across every workspace — one screen instead of a dozen logins.&lt;/p&gt;

&lt;p&gt;Billing follows senders rather than humans. HeyReach &lt;a href="https://www.heyreach.io/pricing" rel="noopener noreferrer"&gt;charges per connected LinkedIn sender&lt;/a&gt;, and team members, VAs and client guests are free, so the fleet carries no seat tax on top of its account count.&lt;/p&gt;

&lt;p&gt;Budget for the costs outside the headline. The named agency tier is $999/mo (Micro Agency, 25 senders; vendor-quoted) and a 20-account fleet fits inside it — but on that tier the included proxy is withdrawn and BYO proxy becomes mandatory, and HeyReach doesn't sell proxies, so that line item is yours to source. The email-enrichment credits are published, and they thin out as you scale: Growth includes 100 per sender, while Micro Agency includes a flat 1,000 for the whole organisation — 40 per seat across its 25 senders — a one-time allocation at subscription that never expires. What carries no published price is the top-up bundle an agency buys once that allocation runs out, so proxies and credit top-ups are both real, unquoted items above the $999. The same &lt;a href="https://help.heyreach.io/en/articles/14741630-heyreach-plans-and-pricing-what-s-included-and-how-to-choose" rel="noopener noreferrer"&gt;pricing KB&lt;/a&gt; also puts a number on the word "unlimited": "Unlimited plan is capped at 300 seats shared pool, and Custom is tailored per your needs."&lt;/p&gt;

&lt;p&gt;Reliability is the topic that recurs most in the review corpus — one Trustpilot reviewer describes campaigns that "always switch off due to a bug they promised to fix only to come back to another bug". And on custody: every account's session is uploaded to and replayed from HeyReach's cloud, so a breach there becomes your conversation with your client, not the vendor's. On native workspace depth, though, it leads this set.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;We-Connect: white-label as a wholesale business, not a branding toggle&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;We-Connect is the other native-depth leader, on a different axis: HeyReach gives you a container per client, We-Connect gives you a product to resell. Its &lt;a href="https://we-connect.io/whitelabel" rel="noopener noreferrer"&gt;white-label page&lt;/a&gt; spells out the wholesale model plainly: "You pay a platform fee for access to the white label infrastructure and then set your own retail pricing for your clients". Your margin is yours to set.&lt;/p&gt;

&lt;p&gt;The client-facing surface matches: "You can invite your customers directly from the We-Connect White Label Admin portal", so clients sign up and log in under your brand. The &lt;a href="https://we-connect.io/pricing" rel="noopener noreferrer"&gt;agency tier&lt;/a&gt; also comes with a named human — it "Includes a dedicated customer success manager, training sessions on demand, and custom integrations". And it has one piece of multi-client hygiene most of this set lacks: cross-account duplicate protection, where "The setting excludes contacts found in other LinkedIn accounts within the team". It's fully cloud with no browser extension, so campaigns run server-side around the clock.&lt;/p&gt;

&lt;p&gt;The drawbacks are mostly about what you can't see before signing. Above 10 seats the Agency tier is entirely Custom behind a "Book a demo" button, so there's no figure to weigh. The automatic discount lands past where a mid-size roster sits: "Volume discounts are available and applied automatically to your account if you have 25+ seats", and a &lt;a href="https://support.we-connect.io/en/articles/6139825-how-do-i-use-we-connect-for-multiple-clients" rel="noopener noreferrer"&gt;20-account agency&lt;/a&gt; never gets there — which is why the table's 20-account number is a derived floor off the published Professional rate, about $1,180/mo at the $59 annual seat price, not a confirmed agency price.&lt;/p&gt;

&lt;p&gt;One fleet capability is missing outright rather than gated: sender rotation is not available on any purchasable tier — "Multi-sender campaigns" is ticked only on the Scale plan, which the pricing table still marks Coming Soon, while Growth, Professional and Agency all show a dash. Isolation is also thinner than the white-label story implies: on the standard Agency tier, isolation runs on team permissions plus a no-notifications guarantee, and a true separate-login container only ships with the paid White Label program. Its live DPA puts client personal data in "data centres in the United States and is stored on secured servers behind firewall". In reviews, reliability is the one topic that runs negative, with complaints that "the number of contacts imported is significantly lower" turning up even inside positive write-ups. On seat economics it holds up: a seat is one connected LinkedIn account, and managers who don't connect one are free.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;More to Consider&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Salesflow&lt;/strong&gt; has the deepest own-domain white-label of this pair: your own domain, logo, colour scheme, and feature access settings from the Pro tier (20+ seats), plus a public API and a unified LinkedIn + Sales Navigator inbox on every tier. The catch is a stepped seat ladder — Basic $99 (1+ seats), Starter $70 (5+ seats), Pro $39.95 (20+ seats) — where a 19-account roster sits at about $1,330/mo while 20 accounts drop to roughly $799/mo, both derived from the quoted per-seat rates. Accounts are onboarded by typing its LinkedIn email and password straight into the web console, the 50+ Agency tier is demo-gated behind "Requires annual commitment, billed monthly", managers aren't free, and its own support KB concedes "Only the primary account holder can access Salesflow" — the client whose login you hold can't reach their own data or campaigns.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Closely&lt;/strong&gt; ships white-label on all tiers with a branded portal clients log into under your brand and a Client Access module that assigns each client its own accounts and credits, plus a flat $999/mo unlimited-seats tier whose price doesn't climb as you scale. The fine print: that plan is capped at 100 accounts by Closely's own Terms, there's no BYO proxy on any tier — its help center calls its proxies USA-based and VPN-like — and its cancellation policy bars lowering the plan or seat count mid-term. Of the two, it is Closely that the source comparison places at solo or small-team scale rather than full agency operations; Salesflow does sell a formal agency tier, it is simply demo-gated with an annual commitment attached.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;FAQ&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Does white-label mean the same thing as client-facing reporting?&lt;/strong&gt; No. White-label re-brands the tool as yours, so the client never sees the vendor. Client-facing reporting is a dashboard or report the client can see, and it may still carry vendor branding. A tool can ship one without the other.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is native client isolation, and does every agency plan have it?&lt;/strong&gt; &lt;br&gt;
Native isolation is an architectural container keeping one client's data and session separate from another's. Most agency plans here offer something weaker — permissions-based, opt-in, a workaround, or a separation that's disputed. Read a qualified isolation as qualified, not as a clean one with a softer label.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which tools have the deepest native white-label and client-workspace tooling?&lt;/strong&gt; &lt;br&gt;
HeyReach's client workspaces and We-Connect's and Closely's branded client portals go furthest, each with the drawback stated in its own section; Linked Helper is limited here. That's a capability fact, not a crown — nothing here is scored.&lt;br&gt;
One boundary applies to all five: no tool eliminates the risk of a LinkedIn restriction at fleet scale. A distinct stable IP per account, no shared sessions and human-range velocity reduce exposure. They don't remove it.&lt;/p&gt;

</description>
      <category>linkedin</category>
      <category>saas</category>
      <category>automation</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Where Your LinkedIn Session Actually Lives: 3 Recruiter Tools Compared Architecturally</title>
      <dc:creator>Michael Harris</dc:creator>
      <pubDate>Tue, 04 Aug 2026 07:37:59 +0000</pubDate>
      <link>https://dev.to/michael_harris/where-your-linkedin-session-actually-lives-3-recruiter-tools-compared-architecturally-4f5c</link>
      <guid>https://dev.to/michael_harris/where-your-linkedin-session-actually-lives-3-recruiter-tools-compared-architecturally-4f5c</guid>
      <description>&lt;p&gt;Most recruiting-tool comparisons rank by feature count. This one looks at something I found more predictive of whether a tool gets your Recruiter seat restricted: where the LinkedIn session actually executes — your machine, or a vendor's cloud.&lt;br&gt;
I tested three tools side by side on a throwaway account, checked the IP each one exits from, and mapped what candidate surfaces each one can actually reach. The results weren't what the marketing pages promised.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Linked Helper&lt;/th&gt;
&lt;th&gt;HeyReach&lt;/th&gt;
&lt;th&gt;We-Connect&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Desktop app — session on your machine/VPS&lt;/td&gt;
&lt;td&gt;Cloud — session uploaded to vendor servers&lt;/td&gt;
&lt;td&gt;Cloud — session on vendor's US servers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;How you connect&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;LinkedIn password (stored on LH servers by default; local storage opt-in)&lt;/td&gt;
&lt;td&gt;Login-password handover preferred; also cookie&lt;/td&gt;
&lt;td&gt;Full LinkedIn email + password entered into platform&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;IP test result&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Not tested (desktop — uses your own IP)&lt;/td&gt;
&lt;td&gt;Datacenter /24, IPQS fraud 100, all 3 test IPs&lt;/td&gt;
&lt;td&gt;Datacenter IPs: IPQS 94 (HostRoyale) and 87 (M247)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Recruiter sourcing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Recruiter projects + search, Sales Nav, groups, events, company pages — 20+ sources&lt;/td&gt;
&lt;td&gt;Search-URL, CSV, post reactors (10k cap); no group/event extraction&lt;/td&gt;
&lt;td&gt;Recruiter, Sales Nav, search, groups, events, post engagers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cost per seat&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$15/mo ($8.25 annual); teammates free&lt;/td&gt;
&lt;td&gt;$79/sender Growth (→$59 at 10+); teammates free&lt;/td&gt;
&lt;td&gt;$69/mo ($49 annual, upfront); managers free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;What's missing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No ATS integration, no unified inbox&lt;/td&gt;
&lt;td&gt;No groups/events; "Unlimited" capped at 300 seats&lt;/td&gt;
&lt;td&gt;No native email finder; Agency tier is "book a demo"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h1&gt;
  
  
  LinkedIn Automation Tools Comparison
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Linked Helper
&lt;/h2&gt;

&lt;p&gt;Desktop app, not a Chrome extension and not a cloud service. The LinkedIn session stays on the recruiter's machine or a VPS — the cookie, the IP, the browser fingerprint are all under the recruiter's control. LinkedIn sees a residential IP, not a vendor datacenter.&lt;/p&gt;

&lt;p&gt;Sourcing is the broadest of the three: Recruiter projects, Recruiter search, Sales Navigator, standard search, groups, events, company pages, post commenters — 20+ surfaces. An AI ICP-scoring action filters profiles before they enter a campaign. Pricing is $15/mo ($8.25 annual), teammates join free through Workspaces, and bulk discounts stack to 50%.&lt;/p&gt;

&lt;p&gt;Safety controls — daily limit of 150 profiles per every 24 hours, randomized pacing, auto-pause on suspicious failures — ship on both tiers, not behind an upsell. The password is stored on LH's servers by default (local storage is opt-in), and there's no native ATS integration or unified inbox.&lt;/p&gt;




&lt;h2&gt;
  
  
  HeyReach
&lt;/h2&gt;

&lt;p&gt;Agency-native engine built for desks running many client LinkedIn accounts. Sender rotation, a unified inbox, isolated client workspaces — the multi-account machinery is real, and agency pricing is public (Micro Agency $999/25 senders, Agency $1,399/50) rather than hidden behind "talk to sales."&lt;/p&gt;

&lt;p&gt;The connection method is direct: the vendor's preferred way in is a login-password handover — "This is the preferred way to connect your LinkedIn accounts, as it allows us to auto-relogin when the session ends." Full credentials in a cloud you don't control.&lt;/p&gt;

&lt;p&gt;The flagship safety claim — "dedicated static residential proxy" that "never shares that IP between two accounts" — didn't survive testing. All three exit IPs scored IPQS fraud 100, sat in one datacenter /24 block (Altinea SAS), and carried proxy, VPN, and recent-abuse flags. That's the direct opposite of residential.&lt;/p&gt;

&lt;p&gt;Sourcing was narrower than expected. Post imports capture reactors only (not commenters) and cap at 10,000 per import per sender. Group-member and event-attendee extraction aren't in the product — a real ceiling for recruiters whose candidates cluster in niche groups. Connecting a Recruiter seat also collides with LinkedIn's one-session rule: "If you connect your account to HeyReach, you'll be logged out of your Recruiter session."&lt;/p&gt;

&lt;p&gt;Pricing: Growth starts at $79/sender, dropping to $59 from the tenth seat. Teammates and clients are free. The "Unlimited" plan is capped at 300 seats in the vendor's own documentation. Reliability is the #1 complaint in reviews, and in March 2026 LinkedIn banned HeyReach's own company page and founder profile.&lt;/p&gt;




&lt;h2&gt;
  
  
  We-Connect
&lt;/h2&gt;

&lt;p&gt;Pure cloud, no extension — campaigns run 24/7. You connect by entering your full LinkedIn email and password (not a session cookie) into the platform, and its DPA places customer data in "data centres in the United States."&lt;/p&gt;

&lt;p&gt;Sourcing is genuinely broad for a cloud tool: LinkedIn Recruiter is a supported account type, imports span search, groups, events, post engagers, newsletter subscribers, CSV, and a unified inbox merges Recruiter and standard threads — a feature neither Linked Helper nor HeyReach offers.&lt;/p&gt;

&lt;p&gt;Safety controls are real: auto-pause on a detected restriction with auto-resume after a week, active on the cheapest tier. That's the strongest reactive safety mechanism here. But the marketed "Real Residential IPs" didn't hold up: two test accounts returned datacenter addresses at IPQS 94 and 87, with proxy and VPN flags on both.&lt;/p&gt;

&lt;p&gt;Pricing: $69/mo per LinkedIn account ($49 annual, billed upfront for the year). Managers who don't use a LinkedIn seat are free. There's no native email finder — the vendor calls it "upcoming" — and the Agency tier is a "book a demo" custom quote.&lt;/p&gt;




&lt;h2&gt;
  
  
  What to check before choosing
&lt;/h2&gt;

&lt;p&gt;The exit IP is the quickest reality check — run it through IPQS or similar on your own connected account. Then map which LinkedIn surfaces the tool can actually scrape versus what the marketing page claims, and compute the real per-seat cost including any VAT, proxy, or VPS costs.&lt;/p&gt;

&lt;p&gt;Session custody turned out to be the axis that mattered most for me. A cloud tool that exits from a datacenter IP at fraud 94–100 is introducing a risk variable a desktop session on your own IP doesn't have. That's not a feature-list argument — it's an infrastructure one.&lt;/p&gt;

</description>
      <category>linkedin</category>
      <category>saas</category>
      <category>automation</category>
      <category>security</category>
    </item>
    <item>
      <title>I Tested Botdog for LinkedIn Automation — Here's Why I Switched</title>
      <dc:creator>Michael Harris</dc:creator>
      <pubDate>Thu, 30 Jul 2026 09:51:33 +0000</pubDate>
      <link>https://dev.to/michael_harris/i-tested-botdog-for-linkedin-automation-heres-why-i-switched-1h6e</link>
      <guid>https://dev.to/michael_harris/i-tested-botdog-for-linkedin-automation-heres-why-i-switched-1h6e</guid>
      <description>&lt;p&gt;&lt;em&gt;Botdog's $35/month headline looked great until I read the fine print. The real month-to-month price is $69, the "unlimited" outreach claim quietly has caps, and there's no native CRM connector in sight. After comparing four tools side by side, Linked Helper came out ahead on every axis that matters for a compliance-conscious workflow.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I spent two weeks running campaigns through Botdog, cross-checking its safety claims, and mapping where it actually falls short for anyone who needs more than basic LinkedIn message sequences. This is what I found — and what I'd recommend instead.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Architecture&lt;/th&gt;
&lt;th&gt;Entry price&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Botdog&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cloud&lt;/td&gt;
&lt;td&gt;$35/month (annual) / $69/month (monthly)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Linked Helper&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Desktop / VPS + Web Version&lt;/td&gt;
&lt;td&gt;$15/month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dripify&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cloud&lt;/td&gt;
&lt;td&gt;Mid-range cloud tier&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Botdog Overview
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft929h10lfzvds79f7qum.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft929h10lfzvds79f7qum.png" alt="Botdog tool" width="800" height="425"&gt;&lt;/a&gt;&lt;br&gt;
Botdog is a cloud-only LinkedIn automation tool — no local install, campaigns keep running with your computer off. The entry tier (Starter) covers unlimited campaigns, unlimited-step sequences, CSV import/export, Sales Navigator and Recruiter support, and the documented safety stack. There's a seven-day no-card trial, which is genuinely useful for kicking the tires without a commitment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User Feedback &amp;amp; Onboarding&lt;/strong&gt;&lt;br&gt;
Users who've reviewed it tend to agree on the simplicity angle. One called it a "Dead simple, efficient automation tool," and another wrote "Super easy to setup, very straightforward, got value immediately!!!" — and I'd echo that the onboarding friction is low.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing &amp;amp; Functional Limitations&lt;/strong&gt;&lt;br&gt;
The problems show up once you look past the dashboard:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pricing Discrepancies: That $35/month headline is an annual prepay, non-refundable per the terms. True month-to-month billing is $69/month — nearly double.&lt;/li&gt;
&lt;li&gt;Limits: The "unlimited connection requests and messages" claim is contradicted by Botdog's own FAQ, which admits plan-level limits exist.&lt;/li&gt;
&lt;li&gt;Integrations: Botdog doesn't have direct integrations with any CRM; connecting to HubSpot requires the Professional tier plus a Zapier Professional subscription at roughly $19.99/month extra.&lt;/li&gt;
&lt;li&gt;Platform Scope: The platform is LinkedIn-only — no email sequences, no social-channel automation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Compliance &amp;amp; Credibility Gaps&lt;/strong&gt;&lt;br&gt;
On compliance, I couldn't find a data region selector, a Data Processing Agreement, any GDPR mention in the privacy policy, or a SOC 2/ISO certification. For a tool that stores your LinkedIn session on its own cloud, that's a meaningful gap — you're trusting infrastructure you can't audit with credentials you can't relocate.&lt;/p&gt;

&lt;p&gt;The "operating safely since 2020" claim is also contradicted by founding evidence from Tracxn, domain registration records, and G2, which raises a separate credibility question. The review signal is positive but thin — four reviews in the dataset, with praise centered on simplicity and complaints aimed at the advanced-feature ceiling.&lt;/p&gt;

&lt;h2&gt;
  
  
  Linked Helper Overview
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fww40px0n2iju2nt7i3ow.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fww40px0n2iju2nt7i3ow.png" alt="Linked Helper tool" width="800" height="600"&gt;&lt;/a&gt;&lt;br&gt;
What stood out to me first was the architecture. Linked Helper runs as a desktop application — the LinkedIn session stays on your own machine or a VPS you control, never stored on a vendor's cloud server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architecture &amp;amp; Session Custody&lt;/strong&gt;&lt;br&gt;
If you want browser-based access without giving up session custody, the Web Version connects you to a VPS-hosted instance so campaigns run around the clock.&lt;/p&gt;

&lt;p&gt;That single design choice eliminates the compliance question every cloud tool forces you to answer: who else can see your LinkedIn cookies? For teams operating under strict data-residency policies, that distinction is not academic — it's the reason the tool passed internal review when cloud alternatives didn't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Direct CRM Integrations&lt;/strong&gt;&lt;br&gt;
The CRM story sealed it. Linked Helper ships 11 direct CRM connectors — ActiveCampaign, Capsule, Close.io, HighLevel, HubSpot, Instantly, Pipedrive, Salesforce, Streak, Zoho, and Zoho Recruit — plus Zapier and Make on top. No middleware paywall, no upgrade-to-unlock pricing games.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Safety Stack &amp;amp; Throttling&lt;/strong&gt;&lt;br&gt;
On the safety side, there's a built-in proxy checker powered by IPQualityScore that actually scores proxy reputation, not just reachability.&lt;/p&gt;

&lt;p&gt;The published limit is 150 actions per rolling 24 hours, with a Smart Daily Limit Adjustment that randomizes volume by roughly ten percent. I'd rather work inside transparent caps than trust an "Unlimited" label that quietly throttles behind the scenes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing &amp;amp; Value&lt;/strong&gt;&lt;br&gt;
Pricing starts at $15/month for the Standard plan, or $8.25/month on a twelve-month license. For what you get — session custody, direct CRM pipes, honest throttling — that's the strongest value per dollar I found in this comparison.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dripify Overview
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F42o5uryk6bnzr3xbmgbj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F42o5uryk6bnzr3xbmgbj.png" alt="Dripify tool" width="800" height="424"&gt;&lt;/a&gt;&lt;br&gt;
I also looked at Dripify because it occupies the same cloud-automation space but approaches it differently. It's a reasonable option to evaluate if Botdog's CRM paywall and single-channel limitation are dealbreakers for your workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Session-Custody Factor&lt;/strong&gt;&lt;br&gt;
That said, cloud architecture means the same session-custody question applies — your LinkedIn credentials still live on someone else's infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing &amp;amp; Feature Trade-Offs&lt;/strong&gt;&lt;br&gt;
Dripify carries its own set of pricing and feature trade-offs that the convenience of a polished dashboard doesn't erase.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some notes&lt;/strong&gt;: If Botdog's gaps around team features are what pushed you to look elsewhere — no white-label option, no sender rotation, no lead distribution across accounts — HeyReach is worth a look. It's built for the agency use case with multi-sender workflows. The caveat: it's still a cloud tool, so compliance-sensitive buyers face the same session-custody question that applies to Botdog and Dripify alike.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Recommendation
&lt;/h2&gt;

&lt;p&gt;After running the comparison, Botdog gets a conditional pass for solo LinkedIn-only outreach from a cloud dashboard — the setup really is fast, and the entry trial is genuinely no-strings. But the billing fine print, the CRM paywall, and the compliance gaps add up. For anyone who needs session custody, direct CRM connectors, or transparent action limits, Linked Helper is the stronger pick across all three axes.&lt;/p&gt;

</description>
      <category>linkedin</category>
      <category>automation</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>10 LinkedIn Automation Tools for Recruiters Compared in 2026</title>
      <dc:creator>Michael Harris</dc:creator>
      <pubDate>Tue, 28 Jul 2026 07:41:40 +0000</pubDate>
      <link>https://dev.to/michael_harris/10-linkedin-automation-tools-for-recruiters-compared-in-2026-ab5</link>
      <guid>https://dev.to/michael_harris/10-linkedin-automation-tools-for-recruiters-compared-in-2026-ab5</guid>
      <description>&lt;p&gt;&lt;strong&gt;Quick answer&lt;/strong&gt; Recruiting automation is often evaluated as if every product merely sends the same messaging sequence through a different web dashboard. In reality, the meaningful trade-offs sit much deeper in the tech stack: where the active LinkedIn session is executed, which candidate surfaces the tool can actually index, and what manual operational gaps your team is left to bridge.&lt;/p&gt;

&lt;p&gt;The architectural split usually comes down to vendor-hosted cloud proxies versus local/VPS execution. While cloud platforms promise zero-maintenance uptime, desktop-native tools like Linked Helper handle sessions directly on the user’s machine or a dedicated VPS. That architectural difference directly impacts your sourcing reach (across 20+ surfaces, including LinkedIn Recruiter) and determines whether scaling your team incurs heavy per-seat penalties or remains flat-rate.&lt;/p&gt;

&lt;p&gt;Here is the practical comparison before we examine the tradeoffs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The comparison, side by side
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Candidate sources it can pull (Recruiter / Sales Nav / search / groups)&lt;/th&gt;
&lt;th&gt;Where the LinkedIn session lives (restriction risk)&lt;/th&gt;
&lt;th&gt;Cost per LinkedIn account / seat&lt;/th&gt;
&lt;th&gt;Data export (CSV / ATS)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Linked Helper&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Recruiter projects/search, Sales Navigator, standard search, groups, events, company employees, and 20+ total sources&lt;/td&gt;
&lt;td&gt;Recruiter's computer or VPS&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;$15&lt;/strong&gt; monthly&lt;br&gt;&lt;strong&gt;$8.25&lt;/strong&gt; effective/mo (annual)&lt;/td&gt;
&lt;td&gt;No native ATS integration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dux-Soup&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Standard People Search; no groups, events, or alumni sourcing&lt;/td&gt;
&lt;td&gt;Pro/Turbo: User's Chrome &amp;amp; IP&lt;br&gt;Cloud: Vendor infrastructure&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;$14.99&lt;/strong&gt; Pro&lt;br&gt;&lt;strong&gt;$55.00&lt;/strong&gt; Turbo&lt;br&gt;&lt;strong&gt;$74.20&lt;/strong&gt; Cloud Agency&lt;/td&gt;
&lt;td&gt;Not established in this comparison&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Expandi&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Recruiter lists, Sales Navigator, standard search, groups, events, and post engagers&lt;/td&gt;
&lt;td&gt;Vendor-controlled cloud infrastructure with an assigned IP&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;$99&lt;/strong&gt; monthly&lt;br&gt;&lt;strong&gt;$79&lt;/strong&gt; effective/mo (annual)&lt;/td&gt;
&lt;td&gt;No built-in email finder; other export details not established here&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  1. Linked Helper: the broadest sourcing reach with local session custody
&lt;/h2&gt;

&lt;p&gt;Linked Helper's fundamental distinction is architectural: &lt;strong&gt;Desktop app, not a Chrome extension. No code injected into the LinkedIn page — safer by design.&lt;/strong&gt; The &lt;a href="https://www.linkedhelper.com/" rel="noopener noreferrer"&gt;product overview&lt;/a&gt; describes that desktop model, while its &lt;a href="https://support.linkedhelper.com/hc/en-us/articles/360015454919-Is-it-safe-to-use-Linked-Helper-Is-it-detectable" rel="noopener noreferrer"&gt;safety documentation&lt;/a&gt; explains the local session basis. In operational terms, you get &lt;strong&gt;a session that never leaves your machine&lt;/strong&gt;. A VPS can provide an always-on setup without moving control of the session to a SaaS vendor.&lt;/p&gt;

&lt;p&gt;That architecture is one reason Linked Helper leads here, but it is not the only one. Recruiters can build candidate lists from saved Recruiter projects and Recruiter search, Sales Navigator, ordinary LinkedIn search, groups, events, and company employee pages. In total, that is &lt;strong&gt;more than twenty native sources&lt;/strong&gt;. An AI action can also score profiles against an ideal candidate profile before the next campaign step.&lt;/p&gt;

&lt;p&gt;Pricing is unusually straightforward at the base level. The &lt;a href="https://www.linkedhelper.com/pricing" rel="noopener noreferrer"&gt;Standard plan&lt;/a&gt; is &lt;strong&gt;$15/ month&lt;/strong&gt;, falling to &lt;strong&gt;$8.25/mo&lt;/strong&gt; with annual billing. Teammates are free, and bulk discounts can stack to −50%. At 20 accounts, the resulting figure is roughly $12 per seat, but that is a derived estimate rather than a vendor-quoted package. The complete self-hosted bill is also unknowable from the license alone because VPS and proxy costs depend on the buyer's setup.&lt;/p&gt;

&lt;p&gt;There are real caveats. Linked Helper has no native ATS integration and no unified inbox. &lt;strong&gt;Linked Helper stores the LinkedIn password on its servers by default, with local storage as an opt-in&lt;/strong&gt;. Its safety case in this comparison is architectural; Linked Helper itself was not subjected to the same first-hand IP measurement used for cloud products. The &lt;a href="https://www.linkedhelper.com/blog/linkedin-automation-security-study/" rel="noopener noreferrer"&gt;published security-test methodology&lt;/a&gt; is useful context, but it is not evidence of a measured Linked Helper pass. Teams must still configure conservative activity controls, including the &lt;strong&gt;daily limit of 150 profiles per every 24 hours&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The result is not a single opaque score. Linked Helper leads on three separable properties: candidate-source breadth, custody of the active session, and per-seat economics.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Dux-Soup: stronger credential privacy, narrower recruiter sourcing
&lt;/h2&gt;

&lt;p&gt;Dux-Soup's best argument is simple: Pro and Turbo do not receive the user's LinkedIn password. Its own support answer puts it plainly: &lt;strong&gt;Dux-Soup does not have a password, however, you still need one to login into a Chrome account.&lt;/strong&gt; The &lt;a href="https://support.dux-soup.com/article/151-where-are-my-login-details-such-as-username-and-password" rel="noopener noreferrer"&gt;credential documentation&lt;/a&gt; supports that distinction. Only the Cloud tier moves the account onto vendor infrastructure.&lt;/p&gt;

&lt;p&gt;The entry plan also includes daily limits, randomized delays, and throttling rather than reserving those controls for a premium tier. But the attractive $14.99 Pro price is not the price of drip automation. That starts with Turbo at &lt;strong&gt;$55 per seat&lt;/strong&gt;. Cloud Agency is a flat &lt;a href="https://support.dux-soup.com/article/556-cloud-agency-scalable-pricing-plan" rel="noopener noreferrer"&gt;$74.20 per seat&lt;/a&gt;, while email-lookup Points have no public unit price, preventing a complete per-seat calculation.&lt;/p&gt;

&lt;p&gt;For recruiters, the larger issue is reach. Dux-Soup's documented manual campaign workflow is &lt;a href="https://support.dux-soup.com/article/202-manually-select-profiles-add-to-campaign" rel="noopener noreferrer"&gt;confined to standard People Search&lt;/a&gt;, with no comparable groups, events, or alumni sourcing. Recruiter and Recruiter Lite also cannot send invitations natively. Every account uses the operator's own IP; Dux-Soup's &lt;a href="https://www.dux-soup.com/pricing/individuals" rel="noopener noreferrer"&gt;individual pricing page confirms there is no dedicated IP per account&lt;/a&gt;. That can become an operational constraint when several seats share one office connection, though it is the vendor's architecture description rather than our own network measurement.&lt;/p&gt;

&lt;p&gt;One &lt;a href="https://www.g2.com/products/dux-soup/reviews/dux-soup-review-4464740" rel="noopener noreferrer"&gt;G2 reviewer&lt;/a&gt; reported the harshest possible outcome: &lt;strong&gt;I got banned for using this Chrome Extension. My advice is to avoid!&lt;/strong&gt; A single review does not establish incidence, but it is a reason not to confuse “no password handover” with zero restriction exposure. Dux-Soup wins the credential-custody comparison; Linked Helper reaches many more recruiting surfaces.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Expandi: broad cloud automation with inconsistent IP-test results
&lt;/h2&gt;

&lt;p&gt;Expandi combines a strong source list with hands-off cloud operation. Recruiters can import from Recruiter, Sales Navigator, standard search, groups, events, and post-engager lists, then run branching multichannel campaigns. Its &lt;a href="https://help.expandi.io/en/articles/5405226-recruiter-url-lead-list" rel="noopener noreferrer"&gt;Recruiter documentation&lt;/a&gt; sets a 1,000-profile list cap and allows invitations from that source, an uncommon combination. There is no built-in email finder, so email-based candidate steps require another provider.&lt;/p&gt;

&lt;p&gt;The safety proposition centers on an assigned proxy. Expandi says, &lt;strong&gt;Everyone in Expandi gets their personal dedicated IP address.&lt;/strong&gt; That claim appears in its &lt;a href="https://help.expandi.io/en/articles/5405881-ip-address-proxy" rel="noopener noreferrer"&gt;proxy documentation&lt;/a&gt;. The first-hand result was mixed: the two-account test report found one clean address and one datacenter address with &lt;strong&gt;IPQS fraud 100&lt;/strong&gt;, while both accounts shared one operating-system and user-agent fingerprint. That does not erase the convenience of cloud execution, but it weakens a blanket “personal IP equals safe” conclusion.&lt;/p&gt;

&lt;p&gt;The advertised price is &lt;strong&gt;$99 Per Month&lt;/strong&gt;, or $79 per month with annual billing, according to &lt;a href="https://expandi.io/pricing/" rel="noopener noreferrer"&gt;Expandi's pricing page&lt;/a&gt;. Managers and teammates are free, but the checkout total needs scrutiny: a &lt;a href="https://help.expandi.io/en/articles/10261470-invoices-workspace" rel="noopener noreferrer"&gt;vendor invoice example&lt;/a&gt; shows VAT adding roughly 21%, and the &lt;a href="https://expandi.io/terms-conditions/" rel="noopener noreferrer"&gt;terms state that subscription fees are non-refundable&lt;/a&gt;. Agency pricing becomes a custom quote beyond nine seats.&lt;/p&gt;

&lt;p&gt;User reports add another caution without supplying a population-wide rate. One review collected on &lt;a href="https://www.trustpilot.com/review/expandi.io" rel="noopener noreferrer"&gt;Trustpilot&lt;/a&gt; says: &lt;strong&gt;This software got me banned several times... A month later - surprise - your linkedin account was banned.&lt;/strong&gt; The architectural tradeoff remains the central one: Expandi keeps work running in its cloud, but the session and exit IP are under vendor control. Linked Helper keeps both on infrastructure the recruiter controls and includes a proxy scorer before use.&lt;/p&gt;

&lt;h2&gt;
  
  
  More to Consider
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HeyReach&lt;/strong&gt; is built for agencies, with free teammates and public multi-seat pricing, but its residential-proxy positioning measured as a shared datacenter /24 at maximum fraud score in testing; the vendor's &lt;a href="https://help.heyreach.io/en/articles/9877938-how-to-connect-my-linkedin-account-to-heyreach" rel="noopener noreferrer"&gt;connection guide describes the proxy setup&lt;/a&gt;, and the “Unlimited senders” tier is &lt;a href="https://help.heyreach.io/en/articles/14741630-heyreach-plans-and-pricing-what-s-included-and-how-to-choose" rel="noopener noreferrer"&gt;capped at 300 seats shared pool&lt;/a&gt;, with no groups or events sourcing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;We-Connect&lt;/strong&gt; supports Recruiter-aware sourcing and pauses a campaign when it detects a restriction, but connecting it places the LinkedIn email and password in a US cloud; its safety guide advertises &lt;a href="https://support.we-connect.io/en/articles/11213096-how-to-connect-linkedin-to-we-connect-and-keep-your-account-safe" rel="noopener noreferrer"&gt;Real Residential IPs&lt;/a&gt;, whereas the first-hand check found datacenter addresses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Closely&lt;/strong&gt; looks inexpensive at $49, yet Starter disables enrichment and AI capabilities; the usable entry point is its &lt;a href="https://closelyhq.com/pricing" rel="noopener noreferrer"&gt;Growth plan at $127 / mo&lt;/a&gt;, and its help material characterizes the US-based residential proxy as VPN-like.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Meet Alfred&lt;/strong&gt; produced the cleanest measured cloud address — IPQS fraud 0, with no proxy or VPN flags—but its documentation never confirms LinkedIn Recruiter seat support, and CSV export requires the Teams tier.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Waalaxy&lt;/strong&gt; offers a quick, low-setup start, yet its cloud transition requires an email, password, and persistent two-factor secret; only Recruiter Lite support is confirmed, and its &lt;a href="https://intercom.help/waalaxy/en/articles/6420681-linkedin-warning-understanding-and-managing-restrictions" rel="noopener noreferrer"&gt;own restriction guidance says it does not comply with LinkedIn's Terms of Service&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dripify&lt;/strong&gt; provides hands-off cloud sequences and a no-card trial, but a paid Recruiter seat still has the &lt;a href="https://help.dripify.com/en/articles/5034187-how-to-run-multiple-campaigns-simultaneously" rel="noopener noreferrer"&gt;same 1,000-profile import ceiling as a free account&lt;/a&gt;, and its included address tested as a flagged datacenter IP.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Octopus CRM&lt;/strong&gt; never asks for credentials because it runs as a Chrome extension, but Recruiter and Premium compatibility require its top &lt;strong&gt;$39.99/mo&lt;/strong&gt; tier despite a broader compatibility claim in the FAQ.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is the best LinkedIn automation tool for recruiters?
&lt;/h3&gt;

&lt;p&gt;There is no context-free winner. A recruiting desk has to choose among sourcing coverage, control over the LinkedIn session, and total per-seat cost. For this comparison, Linked Helper comes out ahead because it combines desktop session custody, the broadest source coverage, and free teammates. A team that prizes password non-custody above source reach may weigh Dux-Soup differently; a team that prioritizes cloud execution may accept Expandi's infrastructure tradeoff.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should a recruiting tool store my LinkedIn password?
&lt;/h3&gt;

&lt;p&gt;Prefer a setup in which the vendor does not hold the password. Also separate password storage from active-session custody: they are related, but they are not identical. Linked Helper's session runs locally, yet &lt;strong&gt;Linked Helper stores the LinkedIn password on its servers by default, with local storage as an opt-in&lt;/strong&gt;. Security evaluation should account for both layers.&lt;/p&gt;

&lt;h3&gt;
  
  
  How much does automation cost per recruiting seat?
&lt;/h3&gt;

&lt;p&gt;First define “seat.” Some vendors charge per LinkedIn account while allowing free managers or teammates; others attach capabilities to higher tiers. Compare the same billing period and include required proxy, VPS, enrichment, and tax costs. Any multi-account total calculated from volume discounts should be labeled as an estimate, not presented as a vendor quote.&lt;/p&gt;

</description>
      <category>linkedin</category>
      <category>saas</category>
      <category>automation</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Is Dux-Soup Safe on LinkedIn? I Read Its Extension's Source Code</title>
      <dc:creator>Michael Harris</dc:creator>
      <pubDate>Mon, 13 Jul 2026 15:11:09 +0000</pubDate>
      <link>https://dev.to/michael_harris/is-dux-soup-safe-on-linkedin-i-read-its-extensions-source-code-35il</link>
      <guid>https://dev.to/michael_harris/is-dux-soup-safe-on-linkedin-i-read-its-extensions-source-code-35il</guid>
      <description>&lt;p&gt;The LinkedIn automation landscape shifted dramatically with the enforcement of Manifest V3 (MV3). While marketing teams still evaluate growth tools based on features, UI, and cost, software engineers and security analysts look at an entirely different layer: the client-side attack surface and data exfiltration vectors. &lt;/p&gt;

&lt;p&gt;Any browser extension running inside a high-value web session carries inherent risks, but when it interacts with LinkedIn's aggressive anti-scraping and browser-fingerprinting systems, architectural choices become a matter of immediate account survival.&lt;/p&gt;

&lt;p&gt;To understand the exact technical footprint of one of the market's oldest tools, I unpacked the shipped production bundle of Dux-Soup v10.2.1 (MV3, Chrome Web Store ID: &lt;code&gt;ppdakpfeaodfophjplfdedpcodkdkbal&lt;/code&gt;) and conducted a static code audit. Additionally, I executed a live browser integration test in June 2026 to measure how its cloud infrastructure handles session routing, exit IPs, and telemetry spoofing.&lt;/p&gt;

&lt;p&gt;Rather than relying on vague privacy policies or marketing promises, this teardown looks straight at the source identifiers, DOM-injection mechanisms, and transmission APIs to answer two core questions: What does LinkedIn actually see when you run this tool, and where exactly do your session credentials go[cite: 2]?&lt;/p&gt;

&lt;p&gt;Here is the deep technical breakdown.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verdict up front:&lt;/strong&gt; Dux-Soup's Cloud plan is HIGH risk in the static code audit because it uploads the full LinkedIn session to Dux-Soup's servers. Free, Pro, Trial, and Turbo are MEDIUM risk: they keep the session local, but they retain the extension, page-injection, direct-API, synthetic-event, and behavioral signals.&lt;/p&gt;

&lt;p&gt;I unpacked Dux-Soup v10.2.1, an MV3 Chrome extension, and read the shipped source. I also ran the June 2026 sign-up/browser test in France. The code produced a detailed architecture trace; the live test produced one narrow result, not an exit-IP measurement.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6wuvedrihshqi1aacgem.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6wuvedrihshqi1aacgem.png" alt="Dux-Soup" width="799" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Dux-Soup architecture actually is
&lt;/h2&gt;

&lt;p&gt;Dux-Soup is one extension package with five editions selected through &lt;code&gt;getEdition()&lt;/code&gt;, but those editions use two different architectures:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plans&lt;/th&gt;
&lt;th&gt;Architecture&lt;/th&gt;
&lt;th&gt;Where the LinkedIn session stays&lt;/th&gt;
&lt;th&gt;Static-audit rating&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free, Pro, Trial, Turbo&lt;/td&gt;
&lt;td&gt;Local-scrape extension&lt;/td&gt;
&lt;td&gt;In your browser&lt;/td&gt;
&lt;td&gt;MEDIUM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud&lt;/td&gt;
&lt;td&gt;Cookie-bridge/session-upload extension&lt;/td&gt;
&lt;td&gt;The full cookie jar is sent to &lt;code&gt;app.dux-soup.com&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;HIGH&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;On Free, Pro, Trial, and Turbo, &lt;code&gt;client.js&lt;/code&gt; reads and calls LinkedIn's internal Voyager API from your browser, using a CSRF token derived from your own &lt;code&gt;JSESSIONID&lt;/code&gt;. Cloud adds a second branch: the extension reads the LinkedIn cookie jar, &lt;code&gt;localStorage&lt;/code&gt;, and a &lt;code&gt;navigator&lt;/code&gt; snapshot, then sends them to Dux-Soup's infrastructure.&lt;/p&gt;

&lt;p&gt;The extension is also visible before either architecture takes an action. AED, short for Active Extension Detection, is not an official LinkedIn feature name or my coinage. It is the label visible in LinkedIn's production JavaScript, where results leave as an &lt;code&gt;AedEvent&lt;/code&gt;; LinkedIn has never publicly acknowledged it. &lt;a href="https://browsergate.eu/how-it-works/" rel="noopener noreferrer"&gt;BrowserGate&lt;/a&gt;, the independent 2025–26 investigation that took apart LinkedIn's production bundle, documented the mechanism, as did &lt;a href="https://www.linkedhelper.com/blog/linkedin-automation-security-study/" rel="noopener noreferrer"&gt;Linked Helper's security study&lt;/a&gt;, which statically audited 16 extensions and live-tested 7 cloud tools.&lt;/p&gt;

&lt;p&gt;I checked Dux-Soup's extension ID, &lt;code&gt;ppdakpfeaodfophjplfdedpcodkdkbal&lt;/code&gt;, on &lt;strong&gt;2026-06-11&lt;/strong&gt;. It was listed, with &lt;code&gt;fetchforwarder.js&lt;/code&gt; as the probe file. The documented target list had grown from 38 entries in 2017 to &lt;strong&gt;6,167 by February 2026&lt;/strong&gt;, roughly a dozen additions per day; that 6,167 count belongs to February, not the June 11 Dux-Soup scan.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz9bpj7fy6hqw6g113s3j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz9bpj7fy6hqw6g113s3j.png" alt="dux-soup browsergate" width="800" height="264"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Where your session goes
&lt;/h2&gt;

&lt;p&gt;The blocks below preserve the source identifiers, paths, and strings recorded from the shipped package. I have not reconstructed missing arguments or invented cleaner-looking URLs.&lt;/p&gt;

&lt;h3&gt;
  
  
  All five editions
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Step 1 — Inject into LinkedIn at page start, in every frame:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;document_start
*://*.google.com/search*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What this means for detection (study §2.2):&lt;/strong&gt; LinkedIn's Spectroscopy system recursively scans the DOM for &lt;code&gt;chrome-extension://&lt;/code&gt; traces, so an injected extension resource can be found without an extension-ID target list. The Google Search match is a second injection surface; on LinkedIn, the script runs from &lt;code&gt;document_start&lt;/code&gt; across all frames.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2 — Intercept Voyager responses in the page:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fetchforwarder.js
xhrforwarder.js
window.fetch
XMLHttpRequest.prototype.open
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What this means for detection:&lt;/strong&gt; A passive in-page read creates no independent network request at that instant. The detectable artifact is the injection from Step 1, but Dux-Soup has a distinctive second exposure: &lt;code&gt;fetchforwarder.js&lt;/code&gt; is both the Voyager-response interceptor and the file LinkedIn's AED scanner (study §2.1) fetches to confirm that Dux-Soup is installed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3 — Call LinkedIn's internal API directly:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;JSESSIONID
voyager
graphql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What this means for detection (study §2.7):&lt;/strong&gt; A direct API call can access profile data without the surrounding page load, telemetry, prefetches, and other requests a real visit generates. That request-map anomaly is visible in server-side logs. &lt;code&gt;voyager&lt;/code&gt; appears &lt;strong&gt;64 times&lt;/strong&gt; and &lt;code&gt;graphql&lt;/code&gt; &lt;strong&gt;4 times&lt;/strong&gt; in the shipped source; those are static string counts, not requests I logged during a session.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4 — Generate programmatic connects, visits, messages, and endorsements:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;dispatchEvent&lt;/span&gt;
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;click&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What this means for detection (study §2.5):&lt;/strong&gt; Events created by a content script carry the read-only flag &lt;code&gt;isTrusted:false&lt;/code&gt;, while a human click carries &lt;code&gt;true&lt;/code&gt;. The package contains &lt;strong&gt;22&lt;/strong&gt; synthetic-event and &lt;strong&gt;80&lt;/strong&gt; programmatic-click signals; again, those numbers count source-code occurrences, not live actions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5 — Optionally block LinkedIn telemetry:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;killtracking
declarativeNetRequest
li/track
merchantpool
platform-telemetry
protechts
sensorcollect
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What this means for detection (study §2.8):&lt;/strong&gt; Telemetry blocking can expose itself when even one unblocked endpoint reports that the expected traffic to the others disappeared. Under MV3, the declarative rules also sit in static JSON inside the extension package, so the blocklist is auditable whether or not a user enables the toggle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6 — Upload action history despite the privacy toggle:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;uselocalstorage
uploads_action_history: true
app.dux-soup.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What this means for detection:&lt;/strong&gt; No documented LinkedIn detection vector specifically names this data-exfiltration channel. It is a privacy finding, not a detection mechanism: on every edition, the extension uploads who was visited, connected, and messaged to &lt;code&gt;app.dux-soup.com&lt;/code&gt; regardless of the "Record profile data" setting.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cloud edition only
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Step 7 — Read the LinkedIn cookie jar and browser state:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;chrome&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getAll&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="na"&gt;domain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;linkedin&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="nx"&gt;li_at&lt;/span&gt;
&lt;span class="nx"&gt;JSESSIONID&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What this means for detection:&lt;/strong&gt; Nothing leaves the machine at the instant of this local read, so there is no new network signal yet. The extension also reads &lt;code&gt;localStorage&lt;/code&gt; and a &lt;code&gt;navigator&lt;/code&gt; snapshot; the architecture-level signal starts with the transmission in Step 8.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8 — Transmit the session to Dux-Soup:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;PUT /api/{user}/sessions/{domain}
app.dux-soup.com
app-fo.dux-soup.com
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What this means for detection (study §2.9):&lt;/strong&gt; The code-observed fact is that the full jar leaves the browser. Server-side replay is the inferred, highly likely half: if the uploaded cookie is used while your local browser remains logged in, one session becomes active from two IPs in parallel, and cookie replay does not appear as a new device on LinkedIn's active-sessions page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 9 — Accept a server-driven command channel:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;externally_connectable
*://*.dux-soup.com/*
remote_control_queue
remote_script
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What this means for detection:&lt;/strong&gt; No published vector names a live command channel specifically. The closest documented mechanism is the parallel-access signal in study §2.9 because a socket.io channel lets Dux-Soup's server push actions into the local tab and receive results through the same forwarders from Step 2. &lt;code&gt;remote_control_queue&lt;/code&gt; appears &lt;strong&gt;80 times&lt;/strong&gt; and &lt;code&gt;remote_script&lt;/code&gt; &lt;strong&gt;16 times&lt;/strong&gt; in the source; these are static counts, not 96 observed commands.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 10 — Make cloud-side replay possible:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;li_at
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What this means for detection (study §2.6):&lt;/strong&gt; This block is the session token present in the transmitted jar, not captured server code. With &lt;code&gt;li_at&lt;/code&gt; server-side, Voyager calls while your browser is closed are architecturally possible and highly likely. LinkedIn's APFC/DNA fingerprint collects 48 characteristics in your browser and adds the result to subsequent API requests; a server replaying the cookie is unlikely to reproduce it. That mismatch is inferred from the architecture, not live-measured for Dux-Soup in this test.&lt;/p&gt;

&lt;p&gt;The source also shows a behavioral trade-off. The default invitation setting is 20 per day, within the roughly 15–20/day cautious range, but the UI permits 500 per day after a dismissible warning; Turbo scans at about 10 pages per minute, with no server-enforced ceiling. Those are static settings. Under the behavioral layer in study §2.11, volume and machine-like pacing add signals even when the session never leaves the user's browser.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpkrhqfxqiddxg4u3pkxa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpkrhqfxqiddxg4u3pkxa.png" alt="Data flow reconstructed from the code audit" width="800" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why the live test couldn't score a Cloud exit IP
&lt;/h3&gt;

&lt;p&gt;The June 2026 live test adds one narrow result and one clear gap. IPQualityScore (IPQS) is an independent fraud-prevention service with its own honeypot and crawler network; it rates an IP from 0–100, and its own examples treat scores of 75 or above as high-risk — a reproducible outside signal, not LinkedIn's verdict or a legal judgment. Both test accounts' exit-IP, operating-system, and user-agent fields came back &lt;code&gt;n/a&lt;/code&gt;, so neither produced an IPQS score for me to report. That gap is architectural, not a shortfall in how I ran the test. &lt;/p&gt;

&lt;p&gt;Dripify, HeyReach, and Expandi's Cloud plan all require logging into a vendor-hosted browser or session through its own separate login step, and that hosted session is exactly what an exit-IP/IPQS test measures. Dux-Soup's Cloud plan has no equivalent hosted-login surface: as Step 7 shows, the already-installed local extension silently reads the LinkedIn session cookie you already hold (&lt;code&gt;chrome.cookies.getAll&lt;/code&gt;) and uploads it automatically to &lt;code&gt;app.dux-soup.com&lt;/code&gt; — there's no separate "log into Dux-Soup's cloud with your LinkedIn account" step to route a test through. The cookie-bridge mechanism itself is why this pillar couldn't observe a Cloud-side exit IP; it isn't a gap in how the test was run.&lt;/p&gt;

&lt;h2&gt;
  
  
  The full findings on Dux-Soup
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Finding&lt;/th&gt;
&lt;th&gt;Scope&lt;/th&gt;
&lt;th&gt;Detection/privacy consequence&lt;/th&gt;
&lt;th&gt;How I know&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;One package branches into five editions; only Cloud transfers the session&lt;/td&gt;
&lt;td&gt;All editions&lt;/td&gt;
&lt;td&gt;Plan changes architecture, so a blanket risk rating would be wrong&lt;/td&gt;
&lt;td&gt;Code read&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;client.js&lt;/code&gt; runs at &lt;code&gt;document_start&lt;/code&gt; in all frames on LinkedIn and also matches Google Search&lt;/td&gt;
&lt;td&gt;All editions&lt;/td&gt;
&lt;td&gt;Spectroscopy can find injected extension traces without an ID list (§2.2)&lt;/td&gt;
&lt;td&gt;Code read&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;fetchforwarder.js&lt;/code&gt; and &lt;code&gt;xhrforwarder.js&lt;/code&gt; intercept Voyager responses&lt;/td&gt;
&lt;td&gt;All editions&lt;/td&gt;
&lt;td&gt;Passive reading adds no request by itself; the injected file remains visible&lt;/td&gt;
&lt;td&gt;Code read&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;fetchforwarder.js&lt;/code&gt; is also the AED probe for extension ID &lt;code&gt;ppdakpfeaodfophjplfdedpcodkdkbal&lt;/code&gt;; the extension remained in the store&lt;/td&gt;
&lt;td&gt;All editions&lt;/td&gt;
&lt;td&gt;Installation is recorded before the tool acts (§2.1)&lt;/td&gt;
&lt;td&gt;Code read, scan dated 2026-06-11; separately live-confirmed in 2026-06&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Direct Voyager/GraphQL access; &lt;code&gt;voyager&lt;/code&gt;×64 and &lt;code&gt;graphql&lt;/code&gt;×4&lt;/td&gt;
&lt;td&gt;All editions&lt;/td&gt;
&lt;td&gt;API access without the normal page request flock creates a request-map anomaly (§2.7)&lt;/td&gt;
&lt;td&gt;Static signal count&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Synthetic actions; &lt;code&gt;synthetic_event&lt;/code&gt;×22 and &lt;code&gt;programmatic_click&lt;/code&gt;×80&lt;/td&gt;
&lt;td&gt;All editions&lt;/td&gt;
&lt;td&gt;Programmatic events expose &lt;code&gt;isTrusted:false&lt;/code&gt; (§2.5)&lt;/td&gt;
&lt;td&gt;Static signal count&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The optional &lt;code&gt;killtracking&lt;/code&gt; rules block five LinkedIn telemetry families&lt;/td&gt;
&lt;td&gt;All editions&lt;/td&gt;
&lt;td&gt;An incomplete blocklist can reveal the missing expected telemetry (§2.8)&lt;/td&gt;
&lt;td&gt;Code read&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Action history uploads even when "Record profile data" is off&lt;/td&gt;
&lt;td&gt;All editions&lt;/td&gt;
&lt;td&gt;Concrete privacy exposure; no dedicated detection vector claimed&lt;/td&gt;
&lt;td&gt;Code read&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The full cookie jar, &lt;code&gt;localStorage&lt;/code&gt;, and &lt;code&gt;navigator&lt;/code&gt; snapshot go to &lt;code&gt;app.dux-soup.com&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Cloud only&lt;/td&gt;
&lt;td&gt;Creates the parallel-session/IP surface (§2.9)&lt;/td&gt;
&lt;td&gt;Code read; server replay is inferred, not observed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Socket.io plus &lt;code&gt;remote_control_queue&lt;/code&gt;×80 and &lt;code&gt;remote_script&lt;/code&gt;×16 forms a command channel&lt;/td&gt;
&lt;td&gt;Cloud only&lt;/td&gt;
&lt;td&gt;Closest documented mechanism is parallel access; no channel-specific vector claimed&lt;/td&gt;
&lt;td&gt;Code read and static signal counts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud-side &lt;code&gt;li_at&lt;/code&gt; replay can mismatch the 48-point APFC/DNA fingerprint&lt;/td&gt;
&lt;td&gt;Cloud only&lt;/td&gt;
&lt;td&gt;Fingerprint mismatch (§2.6)&lt;/td&gt;
&lt;td&gt;Inferred from the architecture, not live-observed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Default 20 invitations/day, UI ceiling 500/day, Turbo about 10 pages/min&lt;/td&gt;
&lt;td&gt;Applicable settings/editions&lt;/td&gt;
&lt;td&gt;Behavioral volume and pacing add signals (§2.11)&lt;/td&gt;
&lt;td&gt;Code read&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exit IP, OS, and UA were &lt;code&gt;n/a&lt;/code&gt; for both test accounts; no IPQS response exists&lt;/td&gt;
&lt;td&gt;Live-test coverage gap&lt;/td&gt;
&lt;td&gt;No Cloud IP, ISP, ASN, fraud score, or cross-account fingerprint conclusion can be drawn&lt;/td&gt;
&lt;td&gt;Live test, France, 2026-06&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No location choice and no timezone setting at account add&lt;/td&gt;
&lt;td&gt;Onboarding&lt;/td&gt;
&lt;td&gt;The flow offers no location/timezone alignment controls&lt;/td&gt;
&lt;td&gt;Live test, France, 2026-06&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No own-proxy option and no built-in proxy checker&lt;/td&gt;
&lt;td&gt;Onboarding&lt;/td&gt;
&lt;td&gt;The user cannot bring or pre-check an address in this flow&lt;/td&gt;
&lt;td&gt;Live test, France, 2026-06&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The sign-up record says credit card required and 0 trial days, while code contains a &lt;code&gt;trial&lt;/code&gt; edition&lt;/td&gt;
&lt;td&gt;Onboarding/code tension&lt;/td&gt;
&lt;td&gt;Reported as unresolved; it is not a detection vector&lt;/td&gt;
&lt;td&gt;Live test plus code read&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqsiyw3z8aso43gx6rdoo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqsiyw3z8aso43gx6rdoo.png" alt="Summary of findings" width="800" height="764"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What this means for your account
&lt;/h2&gt;

&lt;p&gt;LinkedIn uses a &lt;strong&gt;scoring model, not a tripwire&lt;/strong&gt;. An AED listing, an injected page artifact, a synthetic click, unusual request traffic, and a second-IP session each add evidence; none proves an instant restriction on its own. Reasonable delays can reduce the behavioral signal, but they do not erase architecture-level signals.&lt;/p&gt;

&lt;p&gt;The findings are also version- and date-specific: Dux-Soup v10.2.1, MV3, AED scan &lt;strong&gt;2026-06-11&lt;/strong&gt;, and the live test in &lt;strong&gt;France, 2026-06&lt;/strong&gt;. Infrastructure and source code can change. No tool is unbannable.&lt;/p&gt;

&lt;p&gt;User reports are useful for understanding outcomes and assumptions, but they are anecdotes, not incidence data:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Chrome extensions like Dux-Soup or Waalaxy inject JavaScript directly into LinkedIn's webpage. Every extension has a Chrome Store ID and local files. LinkedIn literally runs scripts to search for these IDs."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That came from a practitioner in r/b2bmarketing (score 56, 2026-03-30). The source inspection sharpens the broad claim: Dux-Soup's exact ID was listed on 2026-06-11, and LinkedIn probed the same &lt;code&gt;fetchforwarder.js&lt;/code&gt; file that intercepts Voyager responses.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"It got me banned. Any chrome extension or desktop app can be flagged by Linkedin - and they banned my account."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A furious G2 reviewer (0★, 2020-09-01) reports a real personal outcome, but the second sentence overgeneralizes it. This teardown establishes Dux-Soup-specific signals; it does not show that every extension, desktop app, or cloud service exposes the same surface.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Eh not much - I got banned for using this Chrome Extension. My advice is to avoid! Way better cloud based alternatives out there."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Another furious G2 reviewer (0.5★, 2020-11-11) assumes "cloud based" means safer. Dux-Soup itself shows why architecture matters more than that label: its local editions keep the session on the machine, while Cloud adds the session-transfer and parallel-access surface.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Dux-Soup gives you the safety tools but YOU have to configure them... We've seen a lot of people mess these up and get restricted."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This r/Botdog comment (score 32, 2025-12-15) came from a rival vendor's founder, so it is not neutral evidence. It still identifies a real behavioral problem—users can choose aggressive settings—but the code shows additional extension and Cloud-architecture signals that configuration alone cannot remove.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"dux soup also delays responses so my account doesn't get blocked in the automation."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is the counter-voice: a delighted G2 reviewer (5★, 2021-05-21) credits Dux-Soup's pacing. That control deserves credit because it can reduce behavioral-layer signals (§2.11). It cannot remove the extension-ID and DOM-injection signals on every edition or the session-transfer signal on Cloud.&lt;/p&gt;




&lt;h2&gt;
  
  
  Architectural Mitigations: Reducing the Detection Surface
&lt;/h2&gt;

&lt;p&gt;From a security and automation standpoint, the core vulnerability of any Chrome extension (local or cloud-bridged) is its operational footprint inside the browser session. As long as a tool relies on the Chrome Web Store infrastructure, injects scripts at &lt;code&gt;document_start&lt;/code&gt;, or manipulates the live DOM, it remains exposed to client-side detection vectors like AED and Spectroscopy.&lt;/p&gt;

&lt;p&gt;To completely remove these extension-specific attack surfaces, a different architectural approach is required:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Process Isolation via Standalone Engines:&lt;/strong&gt; Moving automation out of the standard Chrome browser and into an isolated, standalone browser instance (e.g., built on custom Electron or Chromium binaries). This eliminates the Chrome Store Extension ID entirely, leaving nothing for automated scanner probes to fetch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Native Event Simulation:&lt;/strong&gt; Avoiding content scripts that trigger synthetic JS events (&lt;code&gt;isTrusted:false&lt;/code&gt;). Instead, actions should be executed at the browser-engine level, simulating raw OS-level mouse movements and physical keystrokes that are indistinguishable from human inputs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Session Retention:&lt;/strong&gt; To eliminate the high-risk parallel-session anomalies common in cloud architectures, the session state, cookies, and tokens (&lt;code&gt;li_at&lt;/code&gt;) must strictly reside on the local machine or a dedicated VPS controlled by the user.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The transition from a browser extension to an isolated desktop or dedicated instance model shifts the security paradigm from pacing behaviors to surface reduction. Pacing controls change how fast you act; isolating the runtime environment changes whether your automation setup is fundamentally visible to client-side detection algorithms in the first place.&lt;/p&gt;




&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is Dux-Soup safe to use on LinkedIn?
&lt;/h3&gt;

&lt;p&gt;It depends on the plan. Free, Pro, Trial, and Turbo keep the LinkedIn session in your browser but remain visible to LinkedIn's extension scanners and generate direct-API and synthetic-event signals, so the static audit rates them MEDIUM. Cloud additionally uploads the full cookie jar and browser state to Dux-Soup, so it is rated HIGH. These are cumulative signals, not a promise of a restriction, and no automation tool is restriction-proof.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does Dux-Soup collect user data?
&lt;/h3&gt;

&lt;p&gt;Yes. On every edition, action history—who you visited, connected with, and messaged—uploads to &lt;code&gt;app.dux-soup.com&lt;/code&gt; even when "Record profile data" is off. Cloud additionally transmits the full LinkedIn cookie jar, including &lt;code&gt;li_at&lt;/code&gt; and &lt;code&gt;JSESSIONID&lt;/code&gt;, plus &lt;code&gt;localStorage&lt;/code&gt; and a &lt;code&gt;navigator&lt;/code&gt; snapshot. That payload comes from the shipped source, not from interpreting a privacy policy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does LinkedIn detect Dux-Soup?
&lt;/h3&gt;

&lt;p&gt;Yes, on every edition. On 2026-06-11, extension ID &lt;code&gt;ppdakpfeaodfophjplfdedpcodkdkbal&lt;/code&gt; was on LinkedIn's AED list with &lt;code&gt;fetchforwarder.js&lt;/code&gt; as its probe file. LinkedIn can record the fulfilled probe before Dux-Soup performs an automation action, and Spectroscopy provides a separate way to find injected extension traces.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can Dux-Soup get my LinkedIn account banned or restricted?
&lt;/h3&gt;

&lt;p&gt;It adds restriction risk; no single signal automatically triggers a restriction. Dux-Soup combines a known extension ID, page injection, direct Voyager calls, synthetic clicks, optional telemetry blocking, user-controlled volume, and—on Cloud—a transferred session that may run from a second IP. There is no fixed recovery timeline: LinkedIn evaluates the account's cumulative signal history. Some temporary restrictions are lifted on appeal; others are not.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is Dux-Soup's Cloud plan different from Free, Pro, Trial, and Turbo for safety?
&lt;/h3&gt;

&lt;p&gt;Yes, materially. Cloud alone reads and transmits the full LinkedIn session and browser state. The other four editions execute locally. Every edition still shares the extension-ID, injection, direct-request, synthetic-event, and behavioral surfaces.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does Dux-Soup work—is it a Chrome extension or a cloud tool?
&lt;/h3&gt;

&lt;p&gt;It is both, depending on edition. Free, Pro, Trial, and Turbo run as a local browser extension. Cloud uses that extension as a cookie bridge and command channel. The code proves the session upload and the channel; server-side operation of the uploaded session is highly likely, not directly observed in this test.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is a safer alternative to Dux-Soup?
&lt;/h3&gt;

&lt;p&gt;A standalone desktop app such as Linked Helper removes the extension-specific surfaces: there is no Chrome Store ID for LinkedIn's extension-ID scanner to probe and nothing is injected into LinkedIn's page. Linked Helper also keeps the session on the user's machine on every tier. That is a smaller surface, not immunity; no tool is unbannable.&lt;/p&gt;

&lt;p&gt;Full line-by-line teardown: &lt;a href="https://safe-outreach-cab09.web.app/is-dux-soup-safe" rel="noopener noreferrer"&gt;Is Dux-Soup safe?&lt;/a&gt;&lt;/p&gt;

</description>
      <category>linkedin</category>
      <category>security</category>
      <category>privacy</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Is PhantomBuster Safe on LinkedIn? I Reverse-Engineered Its Extension to Find Out</title>
      <dc:creator>Michael Harris</dc:creator>
      <pubDate>Fri, 10 Jul 2026 13:12:15 +0000</pubDate>
      <link>https://dev.to/michael_harris/is-phantombuster-safe-on-linkedin-i-reverse-engineered-its-extension-to-find-out-80o</link>
      <guid>https://dev.to/michael_harris/is-phantombuster-safe-on-linkedin-i-reverse-engineered-its-extension-to-find-out-80o</guid>
      <description>&lt;p&gt;As a developer, I am naturally skeptical of tools that promise seamless automation at the click of a button. Recently, while looking into workflow automation setups for a project, I stumbled upon PhantomBuster. As an optimization and security exercise, I decided to unpack its official Chrome extension (&lt;code&gt;mdlnjfcpdiaclglfbdkbleiamdafilil&lt;/code&gt;, v1.3.9, MV3) to see exactly how it handles user authentication state under the hood. &lt;/p&gt;

&lt;p&gt;What I found inside the source code is a textbook example of a hybrid cookie-bridge architecture — a design that solves the problem of remote execution but exposes a highly visible surface to modern enterprise anti-fraud systems. &lt;/p&gt;

&lt;p&gt;Here is the exact technical breakdown of what happens when you click "Connect."&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;If you want the quick engineering summary before scrolling through the code, here is the architectural reality of this setup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cookie-Bridge Architecture:&lt;/strong&gt; The extension acts as a transport layer. It programmatically extracts your unencrypted &lt;code&gt;li_at&lt;/code&gt; session token and &lt;code&gt;JSESSIONID&lt;/code&gt; from Chrome and mirrors them to PhantomBuster's remote cloud environment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Listed on LinkedIn's Probe List:&lt;/strong&gt; The extension ID is actively listed on LinkedIn's internal Extension Detection (AED) database. The platform can actively scan for its unique assets (e.g., &lt;code&gt;assets/buster-icon-16.png&lt;/code&gt;) on every page load.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Telemetry &amp;amp; Fingerprint Mismatches:&lt;/strong&gt; The background service worker makes direct out-of-context requests to LinkedIn's private Voyager API using hardcoded global headers (like a static &lt;code&gt;timezoneOffset:2&lt;/code&gt;). Replaying these cookies from remote cloud datacenters creates severe browser fingerprint (DNA) mismatches.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Verdict:&lt;/strong&gt; &lt;strong&gt;HIGH RISK by design.&lt;/strong&gt; While PhantomBuster is a legitimate and highly functional multi-platform scraper, duplicating live web sessions and handing raw authentication tokens to third-party cloud containers introduces significant account exposure.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fprw6hy6yv9hfbakq6pq9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fprw6hy6yv9hfbakq6pq9.png" alt="Data flow reconstructed from the code audit" width="799" height="265"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Core Concepts: A Quick Primer
&lt;/h2&gt;

&lt;p&gt;Before we analyze the source files, we need to clarify a few platform-specific mechanisms that define how modern anti-fraud tracking operates:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;li_at&lt;/code&gt; Cookie:&lt;/strong&gt; This is LinkedIn's primary JSON Web Token (JWT) used for session authentication. If an external entity possesses this token, they bypass traditional username/password authentication and two-factor authentication (2FA) entirely.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AED (Active Extension Detection):&lt;/strong&gt; An unacknowledged, production-side scanning system embedded in LinkedIn’s web app JavaScript. It listens for an &lt;code&gt;AedEvent&lt;/code&gt; and aggressively probes the browser for known automation extensions by checking if their internal web-accessible assets (like icons or manifests) can be fetched.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voyager API:&lt;/strong&gt; The internal, private REST API utilized by official LinkedIn web and mobile front-ends. It requires valid security tokens (&lt;code&gt;JSESSIONID&lt;/code&gt;) and specific telemetry tracking headers to respond properly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Request-Map Anomaly:&lt;/strong&gt; A pattern flag triggered when a server detects deep API routes (like &lt;code&gt;/voyager/api/...&lt;/code&gt;) being hit directly without the surrounding contextual traffic—meaning no initial HTML page loads, no media asset fetching, and no standard telemetry tracking scripts firing alongside the request.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Architectural Data Flow
&lt;/h2&gt;

&lt;p&gt;To understand the scope, we must map out how the extension translates a local browser state into a cloud-managed automation routine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ Your Browser ] ---&amp;gt; (Reads li_at &amp;amp; JSESSIONID via chrome.cookies)
       |
       v
[ [phantombuster.com/setup](https://phantombuster.com/setup) ] ---&amp;gt; (Injects token into setup field via Content Script)
       |
       v
[ PhantomBuster Cloud ] ---&amp;gt; (Executes Puppeteer actions via Datacenter Proxies)
       |
       ^
[ background.js (Extension) ] ---&amp;gt; (Directly calls LinkedIn Voyager API from worker)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Where Your Session Goes: Step-by-Step Code Audit
&lt;/h2&gt;

&lt;p&gt;The extension works via a sequence of distinct phases. Let's trace the source code paths to see exactly how they create observable footprints.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Reading the Browser Cookie Jar
&lt;/h3&gt;

&lt;p&gt;The background service worker targets the local browser storage to collect the session context.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Located in background.js (background.js:5131-5274)&lt;/span&gt;
&lt;span class="c1"&gt;// The extension leverages broad chrome.cookies.getAll permissions&lt;/span&gt;
&lt;span class="nx"&gt;chrome&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getAll&lt;/span&gt;&lt;span class="p"&gt;({},&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// It scans the jar and isolates high-value session identifiers&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;liAtCookie&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;li_at&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;jSessionCookie&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;JSESSIONID&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;liAtCookie&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;jSessionCookie&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Derives the necessary CSRF token directly from JSESSIONID&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;csrfToken&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;jSessionCookie&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replaceAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;"&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="c1"&gt;// The security context is now fully extracted into local memory&lt;/span&gt;
        &lt;span class="c1"&gt;// and ready for transit.&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Detection Impact:&lt;/strong&gt; The cookie read itself is local and completely invisible to LinkedIn. However, requesting the global &lt;code&gt;cookies&lt;/code&gt; permission broadens the extension's installation footprint, making it an easy target for static detection vectors.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: The One-Click Cloud Handoff
&lt;/h3&gt;

&lt;p&gt;Once extracted, a content script bridges the local data into the web UI of the management console.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Located in contentscript.js (contentscript.js:5316-5324)&lt;/span&gt;
&lt;span class="c1"&gt;// Target: [https://phantombuster.com/setup/step](https://phantombuster.com/setup/step)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sessionField&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;input[data-role="sessionCookieField"]&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sessionField&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// 1. Auto-fills the raw token string into the visual input form&lt;/span&gt;
    &lt;span class="nx"&gt;sessionField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;extractedLiAtToken&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 

    &lt;span class="c1"&gt;// 2. Dispatches a synthetic DOM event to alert PhantomBuster's React state&lt;/span&gt;
    &lt;span class="nx"&gt;sessionField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dispatchEvent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Event&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;input&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;bubbles&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;}));&lt;/span&gt; 

    &lt;span class="c1"&gt;// The user clicks "Connect", sending the raw session credentials &lt;/span&gt;
    &lt;span class="c1"&gt;// permanently to the vendor's database.&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Detection Impact:&lt;/strong&gt; Because this synthetic &lt;code&gt;input&lt;/code&gt; event fires entirely within the &lt;code&gt;phantombuster.com&lt;/code&gt; origin, it does not trip any &lt;code&gt;isTrusted:false&lt;/code&gt; flag on LinkedIn. The real risk is the consequence of the click: your account is now live in two distinct geographical places simultaneously (your browser and their cloud platform).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Direct Voyager Intercepts from the Service Worker
&lt;/h3&gt;

&lt;p&gt;The extension doesn't just pass credentials; its background worker can interact with the live platform directly using your active browser session.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Located in background.js (Function Ge(), background.js:5282-5301)&lt;/span&gt;
&lt;span class="c1"&gt;// The service worker executes independent API actions&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;makeLinkedinRequest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;targetUrl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`[https://www.linkedin.com/voyager/api$](https://www.linkedin.com/voyager/api$){path}`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;targetUrl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;GET&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;credentials&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;include&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Inherits the active session state of the browser&lt;/span&gt;
        &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;x-restli-protocol-version&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2.0.0&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="c1"&gt;// Hardcoded tracking parameters sent globally across all extension users&lt;/span&gt;
            &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;x-li-track&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;{"clientVersion":"0.2.*","osName":"web","timezoneOffset":2,"deviceFormFactor":"DESKTOP"}&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Detection Impact:&lt;/strong&gt; This creates a severe &lt;strong&gt;Request-Map Anomaly&lt;/strong&gt;. A background service worker executing raw API hits without downloading images, style sheets, or rendering layout trees leaves a prominent algorithmic signature. Additionally, hardcoding &lt;code&gt;timezoneOffset:2&lt;/code&gt; means that an automated request from a user in New York or Tokyo will still broadcast a UTC+2 timezone signature, generating an instant locale mismatch.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Summary Matrix of Extension Findings
&lt;/h2&gt;

&lt;p&gt;Below is the structured data compiled from the static analysis and package configuration:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Finding&lt;/th&gt;
&lt;th&gt;Technical Reality&lt;/th&gt;
&lt;th&gt;Anti-Fraud/Account Impact&lt;/th&gt;
&lt;th&gt;Verification Method&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Extension ID Presence&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Present in the June 2026 AED snapshot with probe file &lt;code&gt;buster-icon-16.png&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;Platform can detect the extension's presence immediately upon page visit.&lt;/td&gt;
&lt;td&gt;Static match in known AED databases.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Token Mirroring&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Raw payload containing &lt;code&gt;li_at&lt;/code&gt; is pushed to &lt;code&gt;api.phantombuster.com&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;Generates severe parallel-session risks when accessed from cloud instances.&lt;/td&gt;
&lt;td&gt;Code read (&lt;code&gt;contentscript.js&lt;/code&gt;).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Out-of-Context API Calls&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Ge()&lt;/code&gt; directly endpoints internal Voyager endpoints.&lt;/td&gt;
&lt;td&gt;Triggers request-map anomalies due to missing page shell telemetry.&lt;/td&gt;
&lt;td&gt;Code read (&lt;code&gt;background.js&lt;/code&gt;).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hardcoded Environment&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;x-li-track&lt;/code&gt; enforces static client versions and a UTC+2 timezone.&lt;/td&gt;
&lt;td&gt;Creates hardware and timezone/locale discrepancies against the true host.&lt;/td&gt;
&lt;td&gt;Static string extraction.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Broad Permissions&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Requests &lt;code&gt;cookies&lt;/code&gt; and scans a 16-platform array (FB, IG, X, Slack, etc.).&lt;/td&gt;
&lt;td&gt;Increases the architectural security perimeter risk across unrelated services.&lt;/td&gt;
&lt;td&gt;Manifest audit (&lt;code&gt;manifest.json&lt;/code&gt;).&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp53v1c4hrt4af2764six.png" alt="Summary of findings" width="800" height="661"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  User Reports Line Up with the Mechanism
&lt;/h2&gt;

&lt;p&gt;I treat review and Reddit quotes as user voice, not measured rates. They are still highly useful when the explicit details in the field reports align with the underlying code architecture we just analyzed.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"kept under their recommended daily limit (enriching 60 records rather than 80), and LinkedIn kicked me out and warned me to stop after 50 records"&lt;br&gt;
&lt;em&gt;Trustpilot, 2-star review, "Tried it once."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;My reaction:&lt;/strong&gt; The interesting detail here is not the exact number 50. It is that the user stayed under the vendor's advised safety limit and still triggered a warning. This is entirely consistent with a cumulative scoring model where rate limits reduce behavioral volume but do not cancel out server-side fingerprint anomalies.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I tested Waalaxy and PhantomBuster — both flagged under 3 weeks."&lt;br&gt;
&lt;em&gt;Reddit, r/automation, "Top LinkedIn Automation/Outreach Tools"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;My reaction:&lt;/strong&gt; While this is a single practitioner's outcome rather than a statistical study, it names the tool directly in a production environment. It serves as a field validation of what happens when a duplicated session is flagged over a prolonged period.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;ERROR: "Disconnected by LinkedIn. Consider lowering activity levels or taking a short break."&lt;br&gt;
&lt;em&gt;Reddit, r/phantombuster, Community Post&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;My reaction:&lt;/strong&gt; This example is highly valuable because it showcases the tool's own error handling surfacing platform pushback. Lowering activity levels handles behavioral signals, but the underlying cloud session-handoff surface remains identical.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Giving them access to your Facebook account will get you banned and don't download their chrome plugins"&lt;br&gt;
&lt;em&gt;Trustpilot, 1-star review.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;My reaction:&lt;/strong&gt; We shouldn't generalize this to mean that every alternative platform blocks the tool instantly. However, it perfectly highlights the data exposure blast radius of the 16-platform cookie table we uncovered in the source code permissions.&lt;/p&gt;




&lt;h2&gt;
  
  
  Architectural Battle: Cloud-Based Bridge vs. Local-First Automation
&lt;/h2&gt;

&lt;p&gt;The core security exposure identified in PhantomBuster is not an accidental software bug; it is an inherent characteristic of the &lt;strong&gt;Cloud-Based execution model&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When an automation framework is hosted in the cloud, it must function as a session clone. It extracts your authentication tokens, moves them to external cloud infrastructure, and relies on a rotating proxy network to mask the transition. This design creates immediate vulnerabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Cloud Proxy Problem:&lt;/strong&gt; Most default cloud instances route through standard datacenter IP blocks, which carry high fraud-prevention flags on enterprise lookup databases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Fingerprint Mismatch:&lt;/strong&gt; A remote cloud container cannot perfectly clone your real machine's hardware canvas, TLS/HTTP2 handshake signatures, or actual mouse and keyboard behaviors. The platform receives a request with your exact cookie, but with a completely different digital footprint.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Is PhantomBuster safe to use on LinkedIn?
&lt;/h4&gt;

&lt;p&gt;My static code read puts PhantomBuster in HIGH-risk territory for LinkedIn. The extension reads your &lt;code&gt;li_at&lt;/code&gt; login cookie and, with one click, hands it to PhantomBuster's cloud. That is a session/permissions exposure. It adds risk; it is not a guarantee.&lt;/p&gt;

&lt;h4&gt;
  
  
  Does LinkedIn detect PhantomBuster?
&lt;/h4&gt;

&lt;p&gt;Yes. PhantomBuster's extension ID is on LinkedIn's active extension-detection list, with probe file &lt;code&gt;assets/buster-icon-16.png&lt;/code&gt;. LinkedIn page code can probe for that extension on every visit, before you run a Phantom.&lt;/p&gt;

&lt;h4&gt;
  
  
  Can PhantomBuster get my LinkedIn account banned or restricted?
&lt;/h4&gt;

&lt;p&gt;It can add restriction risk. The stack is a known AED-listed extension ID, a one-click session handoff to a cloud that is highly likely to act from vendor datacenter infrastructure, and direct service-worker Voyager calls. LinkedIn scores cumulative signals, so the honest answer is "risk goes up," not "restriction is guaranteed."&lt;/p&gt;

&lt;h4&gt;
  
  
  Does PhantomBuster collect user data?
&lt;/h4&gt;

&lt;p&gt;Yes, and the payload is concrete. When you click Get cookie, your LinkedIn &lt;code&gt;li_at&lt;/code&gt; token can be handed to &lt;code&gt;phantombuster.com&lt;/code&gt; / &lt;code&gt;api.phantombuster.com&lt;/code&gt;; the same cookie table covers up to 15 other platforms. The code also references PhantomBuster account email/ID (&lt;code&gt;pbUser.email&lt;/code&gt;, &lt;code&gt;pbUser.id&lt;/code&gt;), scraped LinkedIn contact data moving to HubSpot (&lt;code&gt;app.hubspot.com&lt;/code&gt; / &lt;code&gt;app-eu1.hubspot.com&lt;/code&gt;), and product telemetry going to Intercom (&lt;code&gt;app.intercom.io&lt;/code&gt;).&lt;/p&gt;

&lt;h4&gt;
  
  
  Is PhantomBuster safe on Instagram or my other accounts?
&lt;/h4&gt;

&lt;p&gt;The privacy surface generalizes. The extension's cookie table covers LinkedIn plus Facebook, Instagram, X, YouTube, Slack, GitHub, TikTok, Reddit, Medium, Pinterest, Product Hunt, Intercom, Quora, Uber, and zapier. I am not claiming a LinkedIn detection vector for those platforms; I am saying the same one-click cookie-handoff mechanic creates a broader account blast radius.&lt;/p&gt;

&lt;h4&gt;
  
  
  Is PhantomBuster legit or legal?
&lt;/h4&gt;

&lt;p&gt;Yes, PhantomBuster is a real product with real use cases: multi-platform scraping, 100+ Phantoms, and CRM sync. Scraping public data has been ruled legal in the hiQ line of cases. That is separate from LinkedIn's User Agreement, which prohibits automated access, and separate again from account-safety risk.&lt;/p&gt;

&lt;h4&gt;
  
  
  What are the safe limits, and why does LinkedIn restrict accounts?
&lt;/h4&gt;

&lt;p&gt;Limits matter, but detection is pattern-based rather than a simple counter. A sudden activity jump, a cloud session replaying your cookie from infrastructure that does not look like your normal browser, service-worker API calls without normal page traffic, and an AED-listed extension can all add points. Staying under a vendor's advised limit helps only one part of that model.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Alternative Concept: Local-First (On-Premise)
&lt;/h3&gt;

&lt;p&gt;If you are developing or choosing an automation architecture, the only structural way to eliminate the cloud-bridge risk profile is to pivot toward a &lt;strong&gt;Local-First (On-Premise) model&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In an on-premise execution model, the automation engine operates directly within your machine's environment—running via dedicated standalone application layers or integrated browser controllers. Because the automation engine runs locally:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero Token Transit:&lt;/strong&gt; Your session tokens (&lt;code&gt;li_at&lt;/code&gt;) never leave your system or travel to third-party databases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Organic Network State:&lt;/strong&gt; Requests originate natively from your true residential IP and leverage your actual router's NAT, completely avoiding flag-heavy datacenter proxy blocks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Perfect Hardware Alignment:&lt;/strong&gt; The automation automatically inherits your genuine hardware browser fingerprint, canvas rendering, and TLS/HTTP2 handshake signatures.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From an architectural standpoint, this design pattern is best exemplified by tools like Linked Helper. By moving away from the browser extension model entirely and operating as a standalone smart desktop application, it fundamentally changes the security dynamic:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;No Extension ID to Probe:&lt;/strong&gt; Since it doesn't rely on a Chrome Extension, it leaves zero web-accessible assets (like &lt;code&gt;manifest.json&lt;/code&gt; or icons) for platform-side AED (Active Extension Detection) scripts to scan and flag.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contextual Isolation:&lt;/strong&gt; It interacts with the platform natively within an isolated local browser instance, preserving the complete request map (loading images, stylesheets, and telemetry) instead of executing out-of-context API calls from a detached service worker.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No software tool offers an unbannable guarantee in an environment governed by aggressive AI-driven anti-fraud models. However, from a pure systems-design perspective, choosing an architecture that naturally aligns with your native browser DNA — rather than trying to constantly mask a duplicated session in the cloud—is the single most effective way to minimize your automated footprint.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;The full line-by-line static analysis report and data set details can be reviewed at: &lt;a href="https://safe-outreach.com/is-phantombuster-safe" rel="noopener noreferrer"&gt;https://safe-outreach.com/is-phantombuster-safe&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>linkedin</category>
      <category>security</category>
      <category>privacy</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Is HeyReach Safe on LinkedIn? I Read Its Extension's Source Code</title>
      <dc:creator>Michael Harris</dc:creator>
      <pubDate>Fri, 03 Jul 2026 14:29:42 +0000</pubDate>
      <link>https://dev.to/michael_harris/is-heyreach-safe-on-linkedin-i-read-its-extensions-source-code-i5a</link>
      <guid>https://dev.to/michael_harris/is-heyreach-safe-on-linkedin-i-read-its-extensions-source-code-i5a</guid>
      <description>&lt;p&gt;&lt;em&gt;I read HeyReach's source: full LinkedIn cookie jar upload; June 2026 test accounts surfaced 45.146.212.x cloud sessions.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verdict up front:&lt;/strong&gt; Risk: &lt;strong&gt;HIGH&lt;/strong&gt; by static code audit. HeyReach's connector is a cookie-bridge / session-upload extension: it harvests the full &lt;code&gt;linkedin.com&lt;/code&gt; cookie jar, sends it to &lt;code&gt;api.heyreach.io&lt;/code&gt;, and the live June 2026 test then showed LinkedIn sessions from HeyReach cloud IPs in the same &lt;code&gt;45.146.212.x&lt;/code&gt; block.&lt;/p&gt;

&lt;p&gt;I unpacked the official HeyReach extension and read the shipped source code. One code path does not equal an automatic restriction; LinkedIn scoring is cumulative. The finding is narrower: your browser session can be alive on your machine and in HeyReach's cloud at the same time.&lt;/p&gt;

&lt;h2&gt;
  
  
  What HeyReach actually is
&lt;/h2&gt;

&lt;p&gt;HeyReach is a &lt;strong&gt;Type 2 cookie-bridge / session-upload extension&lt;/strong&gt;. The extension's own description says it is "A simple extension to link your LinkedIn account to HeyReach." The source shows what "link" means: read LinkedIn cookies locally, upload them to HeyReach, and let the cloud operate the account. The extension ID was &lt;code&gt;fnfjobgkepeolimkplmkpifohdabioho&lt;/code&gt;, v1.0.6, fetched 2026-06-05; the report was generated 2026-06-11.&lt;/p&gt;

&lt;p&gt;AED, or Active Extension Detection, is not an official LinkedIn feature name. It is the label visible in LinkedIn's own production JavaScript, where scan results ship as an &lt;code&gt;AedEvent&lt;/code&gt;; LinkedIn has never publicly acknowledged it. &lt;a href="https://browsergate.eu/how-it-works/" rel="noopener noreferrer"&gt;BrowserGate&lt;/a&gt;, an independent 2025-26 investigation that took apart LinkedIn's production bundle, documented the system, and &lt;a href="https://www.linkedhelper.com/blog/linkedin-automation-security-study/" rel="noopener noreferrer"&gt;Linked Helper's security study&lt;/a&gt; audited 16 LinkedIn automation extensions plus 7 live cloud tools against those mechanisms.&lt;/p&gt;

&lt;p&gt;HeyReach's extension ID was &lt;strong&gt;not on the AED list&lt;/strong&gt; in the snapshot dated &lt;strong&gt;2026-06-12&lt;/strong&gt;. That checked snapshot had &lt;strong&gt;6,153 entries&lt;/strong&gt;. "Not listed" is not immunity. The same public sources report growth from &lt;strong&gt;38 entries in 2017&lt;/strong&gt; to &lt;strong&gt;about 461 in 2024&lt;/strong&gt;, &lt;strong&gt;5,459 in December 2025&lt;/strong&gt;, and &lt;strong&gt;6,167 in February 2026&lt;/strong&gt;, roughly a dozen additions per day.&lt;/p&gt;

&lt;p&gt;AED also barely matters for this artifact. The shipped source declares no content scripts and no web-accessible resources, so there is little for extension probing or DOM scanning to grab. The wedge here is not extension detectability. It is the session handoff and the cloud IP that appears after the handoff.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu4gsuqtwpybc911djjyv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu4gsuqtwpybc911djjyv.png" alt="HeyReach offers credentials, Infinite Login, and extension login" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;HeyReach's UI exposes three connection routes. The deepest one, "Infinite Login," asks for the LinkedIn 2FA secret key so the service can mint future login codes. It points in the same direction as the extension audit: keeping a remote LinkedIn session alive.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxrs6v1xmwu5us7fef8fq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxrs6v1xmwu5us7fef8fq.png" alt="HeyReach Infinite Login asks for the LinkedIn 2FA secret key" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Where your session goes
&lt;/h2&gt;

&lt;p&gt;This is pillar one: the connector source. Each step is quoted from the shipped source, then mapped to the detection consequence it creates, or does not create.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1 - Read &lt;code&gt;li_at&lt;/code&gt; as a local gate
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;extractCookie&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cookieName&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cookies&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;chrome&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getAll&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;cookieName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;cookieName&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;liAtCookie&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;extractCookie&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;li_at&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;liAtCookie&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;accountConnectedToHeyReach&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What this means for detection:&lt;/strong&gt; Nothing LinkedIn-facing yet. This is an inert local presence check; &lt;code&gt;li_at&lt;/code&gt; has not left the browser, so the IP / geo / parallel-session vector has not started.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 - Harvest the full &lt;code&gt;linkedin.com&lt;/code&gt; cookie jar
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;LINKEDIN_DOMAIN&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;linkedin.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;getMappedLinkedInCookies&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;browserCookies&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;chrome&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getAll&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;domain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;LINKEDIN_DOMAIN&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;browserCookies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cookie&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;cookie&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;cookie&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;domain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;cookie&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;domain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;cookie&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;expires&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;cookie&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;expirationDate&lt;/span&gt;
        &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What this means for detection:&lt;/strong&gt; This is the exposure step. Reading cookies still does not generate a LinkedIn-side signal, but it makes the full session collectable off the machine. It is the prerequisite for the IP / geo / parallel-session signal: one cookie about to be alive from a second IP.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3 - POST the cookie jar to &lt;code&gt;api.heyreach.io&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;HEYREACH_API_ENDPOINT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.heyreach.io/api&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;logInLinkedInAccount&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;cookies&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;getMappedLinkedInCookies&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;inboxConfig&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;inboxConfig&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)?.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;0&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;usingCustomProxy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;customProxyInput&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;display&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;none&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;accountProfile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;getAccountProfile&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;memberId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;accountProfile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;memberId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;inboxScrapeConfiguration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;parseInt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;inboxConfig&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;usingCustomProxy&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;proxyConfig&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getCustomProxyConfig&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="nf"&gt;validateCustomProxyInput&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;proxyConfig&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;testCustomProxy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;proxyConfig&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;customProxy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;proxyConfig&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;countryCode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;countrySelect&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)?.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="cm"&gt;/* Registering the account to the tenant in HeyReach */&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;endpoint&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/LinkedInAccount/CreateLinkedInAccountFromCookies&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;makeHeyReachRequest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;endpoint&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{},&lt;/span&gt; &lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What this means for detection:&lt;/strong&gt; This is the parallel-session tell. The same LinkedIn session can now be used from your browser and, highly likely, from HeyReach's server-side infrastructure. That maps to the study's IP / geo / parallel-session vector and creates an APFC/DNA fingerprint mismatch: LinkedIn's browser fingerprint is built in your real browser, while a cloud replay cannot reproduce it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0gssizlbpwfv2lhxethl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0gssizlbpwfv2lhxethl.png" alt="Data flow reconstructed from the code audit" width="799" height="138"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4 - Call LinkedIn's profile API from the service worker
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;getAccountProfile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;makeLinkedinRequest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/voyager/api/me&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{},&lt;/span&gt; &lt;span class="p"&gt;{})&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;selfProfileData&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;urnWithId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;selfProfileData&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;miniProfile&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;objectUrn&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
            &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;liUserIDParts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;urnWithId&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;memberId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;liUserIDParts&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;liUserIDParts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;makeLinkedinRequest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;endpoint&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{},&lt;/span&gt; &lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;method&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;LINKEDIN_URL&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;endpoint&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cookiesJson&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;getCookiesFromPage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;LINKEDIN_URL&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cookies&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cookiesJson&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cookieHeader&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getCookieHeaderFromCookies&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;jSessionCookie&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cookie&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;cookie&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;JSESSIONID&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;csrfToken&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;jSessionCookie&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;jSessionCookie&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;jSessionCookie&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;jSessionCookie&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replaceAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;"&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;x-restli-protocol-version&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2.0.0&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;csrf-token&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;csrfToken&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Cookie&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;cookieHeader&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What this means for detection:&lt;/strong&gt; This is a one-time request-map anomaly during account linking, not evidence of ongoing automation. The service worker makes an internal LinkedIn API call with a constructed &lt;code&gt;Cookie&lt;/code&gt; header and CSRF token from &lt;code&gt;JSESSIONID&lt;/code&gt;; a real profile view would normally carry surrounding page, prefetch, and telemetry traffic.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5 - Block logout two ways
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;chrome.webNavigation.onBeforeNavigate.addListener(async (details) =&amp;gt; {
    if (details.url.includes("https://www.linkedin.com/uas/logout")) {
        const cookies = await chrome.cookies.getAll({
            url: "https://www.linkedin.com"
        });
        for (let cookie of cookies) {
            await chrome.cookies.remove({
                url: "https://www.linkedin.com",
                name: cookie.name
            });
        }

        await chrome.tabs.update(details.tabId, {
            url: "https://www.linkedin.com"
        });
        void initiateView();
    }
});

{
    "id": 1,
    "priority": 2,
    "action": {
        "type": "block"
    },
    "condition": {
        "urlFilter": "https://www.linkedin.com/uas/logout*",
        "resourceTypes": [
            "main_frame"
        ]
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What this means for detection:&lt;/strong&gt; This is &lt;strong&gt;not&lt;/strong&gt; a LinkedIn ban signal. It is a user-control and privacy finding: the extension blocks the normal logout route, helping preserve the session handed to the cloud rather than giving the user a clean LinkedIn-side revocation path.&lt;/p&gt;

&lt;p&gt;Two more source notes matter. First, the web app can ask the extension for &lt;code&gt;"getLinkedInProfile"&lt;/code&gt;, and the service worker returns the profile plus the fresh cookie array through the externally connectable &lt;code&gt;app.heyreach.io&lt;/code&gt; channel. That is an on-demand re-harvest path and a privacy finding, not a separate LinkedIn detection vector. Second, the &lt;code&gt;isTrusted:false&lt;/code&gt; synthetic event at &lt;code&gt;popup.js:20&lt;/code&gt; appears once in the shipped source. &lt;strong&gt;LOW DIRECT RISK:&lt;/strong&gt; it fires inside the extension popup, not inside &lt;code&gt;linkedin.com&lt;/code&gt;, so LinkedIn's in-page JavaScript cannot observe it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The live cloud IP test
&lt;/h2&gt;

&lt;p&gt;This is pillar two: what appeared after the handoff. I used two real accounts from France in &lt;strong&gt;June 2026&lt;/strong&gt;. The test observed account 1 exiting on &lt;code&gt;45.146.212.28&lt;/code&gt;; account 2 exiting on &lt;code&gt;45.146.212.36&lt;/code&gt; and &lt;code&gt;45.146.212.149&lt;/code&gt;. They were different IPs, but all in the same &lt;code&gt;/24&lt;/code&gt; block, &lt;code&gt;45.146.212.x&lt;/code&gt;, and all on the same ISP/ASN: Altinea SAS, ASN 41405.&lt;/p&gt;

&lt;p&gt;LinkedIn's own Active Sessions page showed the HeyReach session quickly. Account 1 showed a second session on &lt;code&gt;45.146.212.28&lt;/code&gt; within about &lt;strong&gt;28 seconds&lt;/strong&gt; of connecting. Account 2 showed a second session on &lt;code&gt;45.146.212.36&lt;/code&gt; within about &lt;strong&gt;24 seconds&lt;/strong&gt;. That is the star observation for this brand: the second session did surface in LinkedIn's own account-security UI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fff25t1cgmpvvomjhell7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fff25t1cgmpvvomjhell7.png" alt="LinkedIn Active Sessions showed account 1's HeyReach session on 45.146.212.28" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Floifa3ygvyd3w8ioyyud.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Floifa3ygvyd3w8ioyyud.png" alt="LinkedIn Active Sessions showed account 2's HeyReach session on 45.146.212.36" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;IPQualityScore (IPQS) is an independent fraud-prevention service, active for more than 10 years, that rates IPs from its own honeypot and crawler network: a 0-100 fraud score, proxy/VPN flags, connection type, and recent-abuse history. IPQS's own examples treat scores of 75 or above as high-risk. This is an independent IP-quality signal, not LinkedIn's enforcement verdict.&lt;/p&gt;

&lt;p&gt;All three HeyReach exit IPs returned the same IPQS fields: &lt;code&gt;fraud_score&lt;/code&gt; &lt;strong&gt;100/100&lt;/strong&gt;, &lt;code&gt;proxy: Yes&lt;/code&gt;, &lt;code&gt;vpn: Yes&lt;/code&gt;, &lt;code&gt;tor: No&lt;/code&gt;, &lt;code&gt;recent_abuse: Yes&lt;/code&gt;, &lt;code&gt;bot_status: Yes&lt;/code&gt;, &lt;code&gt;abuse_velocity: high&lt;/code&gt;, &lt;code&gt;connection_type: Data Center&lt;/code&gt;, &lt;code&gt;country: FR&lt;/code&gt;, ISP Altinea SAS, ASN 41405. City labels are not treated as verified fact.&lt;/p&gt;

&lt;p&gt;Cross-account isolation was weak in one specific way: the OS/UA fingerprint was identical across the two accounts. The accounts did not get the same single IP, but they landed in the same address block, same ASN, same IPQS reputation profile, and same OS/UA fingerprint.&lt;/p&gt;

&lt;p&gt;The onboarding controls were specific too: &lt;strong&gt;154 selectable locations&lt;/strong&gt;, own-proxy support, &lt;strong&gt;no built-in proxy-quality checker&lt;/strong&gt;, no timezone setting at account add, and a &lt;strong&gt;14-day trial with no credit card&lt;/strong&gt;. The country picker and custom-proxy input acknowledge that cloud IP origin matters; the missing checker means nothing warned that the assigned IPs scored 100/100 on IPQS.&lt;/p&gt;

&lt;p&gt;There is also a claim-versus-measurement gap worth naming, not resolving. HeyReach's own help center frames the assigned IP as a "dedicated static residential proxy… never shared between two accounts." The measurement was the opposite on both counts: &lt;code&gt;connection_type: Data Center&lt;/code&gt; on all three exit IPs, and the two accounts landing in the same &lt;code&gt;45.146.212.x&lt;/code&gt; &lt;code&gt;/24&lt;/code&gt; on one ISP/ASN (Altinea SAS, 41405). I am reporting what IPQS returned, not relabeling the vendor's infrastructure — but the vendor's word ("residential," "never shared") and the observation ("Data Center," same &lt;code&gt;/24&lt;/code&gt;) do not match.&lt;/p&gt;

&lt;h2&gt;
  
  
  The full findings
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Finding&lt;/th&gt;
&lt;th&gt;Detection or safety vector&lt;/th&gt;
&lt;th&gt;How I know&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Full &lt;code&gt;linkedin.com&lt;/code&gt; cookie jar uploaded to &lt;code&gt;api.heyreach.io&lt;/code&gt;, including &lt;code&gt;li_at&lt;/code&gt;, &lt;code&gt;JSESSIONID&lt;/code&gt;, &lt;code&gt;li_a&lt;/code&gt;, and the rest.&lt;/td&gt;
&lt;td&gt;IP / geo / parallel-session signal&lt;/td&gt;
&lt;td&gt;Code read&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LinkedIn's Active Sessions page showed the HeyReach cloud session within about 28 seconds on account 1 and 24 seconds on account 2.&lt;/td&gt;
&lt;td&gt;Parallel-session signal, visible in LinkedIn's own UI&lt;/td&gt;
&lt;td&gt;Live test&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exit IPs were &lt;code&gt;45.146.212.28&lt;/code&gt;, &lt;code&gt;45.146.212.36&lt;/code&gt;, and &lt;code&gt;45.146.212.149&lt;/code&gt;: same &lt;code&gt;/24&lt;/code&gt;, same ISP/ASN Altinea SAS 41405.&lt;/td&gt;
&lt;td&gt;Shared-subnet clustering&lt;/td&gt;
&lt;td&gt;Live test&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IPQS returned 100/100, proxy Yes, vpn Yes, tor No, recent_abuse Yes, bot_status Yes, abuse_velocity high, Data Center, country FR on all three IPs.&lt;/td&gt;
&lt;td&gt;IP reputation signal&lt;/td&gt;
&lt;td&gt;Live IPQS lookup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OS/UA fingerprint was identical across the two accounts.&lt;/td&gt;
&lt;td&gt;Fingerprint consistency issue&lt;/td&gt;
&lt;td&gt;Live test&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The literal &lt;code&gt;voyager&lt;/code&gt; string appears once in the shipped source and is used for a service-worker profile lookup.&lt;/td&gt;
&lt;td&gt;Request-map anomaly during linking only&lt;/td&gt;
&lt;td&gt;Static code count, not runtime telemetry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;isTrusted:false&lt;/code&gt; synthetic event pattern exists once, but only in the extension popup.&lt;/td&gt;
&lt;td&gt;Low direct risk; not visible to LinkedIn's page JS&lt;/td&gt;
&lt;td&gt;Static code count&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Anti-logout intercept plus network block prevents normal logout flow.&lt;/td&gt;
&lt;td&gt;User-control/privacy finding, not a LinkedIn-side signal&lt;/td&gt;
&lt;td&gt;Code read&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The web app can re-pull profile plus cookies through &lt;code&gt;app.heyreach.io&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;Privacy finding and session-retention surface&lt;/td&gt;
&lt;td&gt;Code read&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The extension ships no delays, daily caps, working-hours scheduler, or campaign pacing controls.&lt;/td&gt;
&lt;td&gt;Behavioral layer remains cloud-side and unauditable from the package&lt;/td&gt;
&lt;td&gt;Code read&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh4jfh493g8ewv6zukclt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh4jfh493g8ewv6zukclt.png" alt="Summary of findings" width="800" height="661"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What this means for your account
&lt;/h2&gt;

&lt;p&gt;This is a scoring model, not a tripwire. A cookie upload, a second IP, a dirty IP-quality reading, a missing browser fingerprint, and a one-time service-worker profile lookup each add risk. Daily limits can reduce behavioral velocity, but they do not erase the session-handoff surface. These findings are specific to the 2026-06 setup I tested, not a claim that every cloud tool behaves this way.&lt;/p&gt;

&lt;p&gt;The user reports around HeyReach are mixed, so I would not treat anecdotes as measurements. I would treat them as user-language mirrors of the mechanisms above.&lt;/p&gt;

&lt;p&gt;Reddit, r/AskVibesellers, 2026-03-08:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I've seen 23% of users at moderate automation levels hit restrictions, not even heavy users — we're talking people running normal sequences through HeyReach or Expandi."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is a user's anecdotal claim, not a measured statistic. The useful detail is "moderate automation": connection-level signals can exist even when volume is not extreme.&lt;/p&gt;

&lt;p&gt;Trustpilot, 1 star, 2025-06-10:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Did not like that it was automatically following and basically spamming people using my profile."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;"Using my profile" is the important phrase. The code explains how that can feel true: the full cookie jar is handed to the cloud, so the cloud can operate as the LinkedIn account.&lt;/p&gt;

&lt;p&gt;Trustpilot, 5 stars, 2026-01-22:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"It allows us to scale volume without risking account safety."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That counter-voice belongs here. Some users are happy. But one happy account is not a safety measurement, and it does not change the documented session upload, IPQS 100/100 cloud exits, or same-/24 clustering.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is HeyReach safe to use on LinkedIn?
&lt;/h3&gt;

&lt;p&gt;My static code audit rates it &lt;strong&gt;HIGH risk&lt;/strong&gt;. The extension sends the whole &lt;code&gt;linkedin.com&lt;/code&gt; cookie jar to &lt;code&gt;api.heyreach.io&lt;/code&gt;, so the account can be operated from another IP. No automation tool is ban-proof; this one exposes a large session-side surface.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is HeyReach banned on LinkedIn?
&lt;/h3&gt;

&lt;p&gt;At the vendor level, yes: LinkedIn removed HeyReach's company page and CTO/CRO/CMO profiles on &lt;strong&gt;2026-03-25&lt;/strong&gt;, according to HeyReach's own post. That is not the same as your account being banned or restricted, but it shows active enforcement against the tool's LinkedIn presence.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does LinkedIn detect HeyReach?
&lt;/h3&gt;

&lt;p&gt;The extension ID was not on LinkedIn's AED list in the &lt;strong&gt;2026-06-12&lt;/strong&gt; snapshot of &lt;strong&gt;6,153 entries&lt;/strong&gt;. But "not listed" is not "undetectable." The live test showed the cloud session in LinkedIn's own Active Sessions page, and the session ran from foreign datacenter IPs with IPQS 100/100 scores.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can HeyReach get my LinkedIn account banned or restricted?
&lt;/h3&gt;

&lt;p&gt;It can add restriction risk. That is different from "use it once and you are banned." In this test, HeyReach stacked a session running from a foreign datacenter IP, IPQS 100/100 IPs, a fingerprint mismatch, a one-time service-worker profile API call, and user reports of restrictions. Daily limits help with behavior, but they do not cancel the architecture.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does HeyReach have access to my LinkedIn account or collect user data?
&lt;/h3&gt;

&lt;p&gt;Yes. The concrete payload includes &lt;code&gt;li_at&lt;/code&gt;, &lt;code&gt;JSESSIONID&lt;/code&gt;, &lt;code&gt;li_a&lt;/code&gt;, and the rest of the &lt;code&gt;linkedin.com&lt;/code&gt; cookies, plus LinkedIn &lt;code&gt;memberId&lt;/code&gt;, chosen country or custom proxy details, and rough geolocation from Cloudflare's IP-trace endpoint. The web app can also request a fresh profile-plus-cookie payload. The anti-logout logic makes the handed-off session harder to revoke through normal logout.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does HeyReach work: Chrome extension or cloud tool?
&lt;/h3&gt;

&lt;p&gt;Both, in sequence. The Chrome extension collects the session and account profile, then POSTs the cookie array to HeyReach. Automation is cloud-side. The extension ships no campaign logic, sequence engine, rate limits, delays, caps, or working-hours scheduler.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why does LinkedIn restrict accounts, and what is a safer setup?
&lt;/h3&gt;

&lt;p&gt;LinkedIn scores request shape, not only volume: IP and geo shifts, one cookie on multiple IPs, out-of-browser API access, fingerprint mismatch, timezone or locale mismatch, and behavioral velocity. A safer setup keeps the session, IP, and browser fingerprint on your machine, checks proxy quality first, and uses explicit delays, caps, and working hours. Smaller surface, not immunity.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Soft publisher note: this is architectural, not magical. HeyReach uploads the full cookie jar to &lt;code&gt;api.heyreach.io&lt;/code&gt;; Linked Helper is a standalone desktop app, so the LinkedIn session never leaves your machine. HeyReach's cloud replay used datacenter IPs in the same &lt;code&gt;/24&lt;/code&gt; with IPQS 100/100 scores; Linked Helper works from your own organic IP and browser fingerprint. HeyReach had no built-in proxy-quality checker; Linked Helper ships one. HeyReach's extension ships zero pacing controls; Linked Helper exposes configurable delays, caps, and working hours. HeyReach has a Chrome Web Store extension ID and an on-demand cookie re-harvest channel; Linked Helper has no Chrome Web Store extension ID for LinkedIn's extension-ID scanner to probe and injects nothing into the page. HeyReach's anti-logout logic interferes with session control; Linked Helper leaves session control on your machine. VPS plus Web Version gives cloud-equivalent 24/7 uptime without handing the session to a vendor. No tool is unbannable, including Linked Helper; the surface is just smaller. See &lt;a href="https://www.linkedhelper.com/blog/linkedin-automation-security-study/" rel="noopener noreferrer"&gt;Linked Helper's security study: 16 extensions statically audited and 7 cloud tools live-tested&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Full technical audit: &lt;em&gt;&lt;a href="https://safe-outreach.com/is-heyreach-safe" rel="noopener noreferrer"&gt;https://safe-outreach.com/is-heyreach-safe&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>linkedin</category>
      <category>security</category>
      <category>privacy</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
