You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

LinkedIn企业页面爬取遇权限验证,如何通过Cookie解决?

解决LinkedIn企业主页爬取时的验证墙问题

你遇到的问题是LinkedIn严格的反爬机制导致的——即使添加了浏览器请求头,没有有效的登录会话Cookie,你的请求还是会被判定为非授权访问,从而跳转到验证墙。下面一步步分析问题并给出解决方案:

为什么当前代码无法绕过验证?

LinkedIn的反爬系统不仅仅检查User-Agent,还会验证请求是否来自一个已登录的有效会话:

  • 未登录的请求(即使UA正确)会被直接重定向到authwall验证页面,也就是你看到的那段跳转JS。
  • 仅靠请求头伪装不足以通过LinkedIn的身份验证,必须携带登录后的会话Cookie。

如何添加Cookie解决问题?

要获取有效的Cookie,你需要先在浏览器中登录LinkedIn,然后复制会话Cookie到代码中:

步骤1:从浏览器复制登录后的Cookie

  1. 打开Chrome/Firefox,登录LinkedIn并访问目标企业主页(比如https://www.linkedin.com/company/biotech/)。
  2. 按下F12打开开发者工具,切换到Network标签页。
  3. 刷新页面,找到第一个GET请求(就是当前页面的请求,URL和你要爬的一致)。
  4. 在该请求的Request Headers中,找到Cookie字段,复制整个字符串(注意不要遗漏任何部分)。

步骤2:修改Python代码添加Cookie

把复制的Cookie添加到请求头中,修改后的代码如下:

import requests
from bs4 import BeautifulSoup as BS

url = 'https://www.linkedin.com/company/biotech/'
headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.0",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.5",
    "Accept-Encoding": "gzip, deflate",
    "DNT": "1",
    "Connection": "close",
    "Upgrade-Insecure-Requests": "1",
    # 替换成你从浏览器复制的完整Cookie字符串
    "Cookie": "li_at=你的li_at值; JSESSIONID=你的JSESSIONID值; ... 其他Cookie键值对"
}

response = requests.get(url, headers=headers)

# 检查是否成功绕过验证墙
if "authwall" not in response.url:
    soup = BS(response.content, 'html.parser')
    # 定位specialties字段(注意LinkedIn页面结构可能会随时更新)
    specialties_section = soup.find('div', class_='org-about-company-module__specialties')
    if specialties_section:
        # 提取专长文本
        specialties = [item.get_text(strip=True) for item in specialties_section.find_all('span')]
        print("企业专长:", ", ".join(specialties))
else:
    print("仍被重定向到验证墙,可能Cookie已失效或需要完成人机验证")

额外注意事项

  • Cookie有效期:LinkedIn的会话Cookie会过期,通常几小时到几天不等,过期后需要重新从浏览器复制。
  • 反爬风险:频繁使用脚本爬取可能会导致你的LinkedIn账号被限制,甚至封禁,务必遵守LinkedIn的服务条款。
  • 动态内容问题:如果specialties字段是通过JavaScript动态加载的,requests+BeautifulSoup可能无法获取到内容,这时建议使用SeleniumPlaywright模拟真实浏览器操作,它们能自动处理JS渲染和会话管理。

内容的提问来源于stack exchange,提问作者EatSleepCode

火山引擎 最新活动