Skip to content

Omit csrf-token on LinkedIn contacts.read navigation POST - #244

Draft
0thernet wants to merge 1 commit into
mainfrom
cursor/linkedin-contacts-csrf-omit-7c42
Draft

0thernet wants to merge 1 commit into
mainfrom
cursor/linkedin-contacts-csrf-omit-7c42

Conversation

@0thernet

Copy link
Copy Markdown
Member

After adapter 1.35.0, contained Chrome still returned HTTP 500 text/html on the Contact-info navigation POST even with the full observed X-Li header set and the exact nested headed body (398 compact bytes). Headed Network capture POST-request-headers-20260912.md listed no Csrf-Token request header, while contained rsc-action always set csrf-token from JSESSIONID.

This PR still requires a valid ajax: JSESSIONID cookie and sends it with credentials:include, but omits csrf-token on that Contact-info navigation POST only. GraphQL and other contained fetches still send the header.

Compact JSON emit stays. The headed Content-Length of 400 is two bytes above 398 and is not enough evidence to invent spaces or a terminator. Sec-Fetch-* and Accept-Language stay omitted until a capture proves they are required.

If this still 500s, Email may need a headed UI interaction rather than another synthetic POST: keep the bound profile document, click one reviewed Contact-info control whose identity comes from a capture, and read the SPA-issued navigation POST. That click path is documented only and stays capture-required until the exact control and issued request are reviewed. It is not implemented here.

GraphQL 403, navigation GETs, vanity HTML-shell honesty, sduiid=screenId, the headed nested body, and observed X-Li copies stay. Soft-labels stay. Self, non-first-degree, and contradictory distances still fail closed. No email is invented.

Adapter bundle 1.36.0. Plugin stays 1.6.0. Package stays 0.18.1. File inventory stays 558.

Cloud has no signed-in LinkedIn session. Do not treat this landing as live green.

Operator smoke:

printf '%s' '{"profile_url":"https://www.linkedin.com/in/tessbloch/"}' \
  | ghostget invoke linkedin-web contacts.read --input - --auth linkedin-dormant-20260911 --json
Open in Web Open in Cursor 

Headed Network capture listed no Csrf-Token on the Contact-info
navigation POST, while contained rsc-action always set csrf-token from
JSESSIONID. Still require a valid ajax: JSESSIONID cookie and send it
with credentials:include, but omit csrf-token on that POST only.
Keep compact 398-byte emit. Document a capture-required headed click
path if this still 500s. Adapter bundle 1.36.0.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: hraness <0thernet@users.noreply.github.com>
@vercel

vercel Bot commented Sep 12, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
ghostget Ready Ready Preview Sep 12, 2026 6:36am UTC

Request Review

@0thernet

Copy link
Copy Markdown
Member Author

Leaving open after #245 (06f806b) landed the click-modal path. This csrf-omit branch is now CONFLICTING vs main; not merging. Close later if the follow-up after live overlay-href pin supersedes any leftover POST experiment.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants