LinkedIn企业页面爬取遇权限验证,如何通过Cookie解决?
解决LinkedIn企业主页爬取时的验证墙问题
你遇到的问题是LinkedIn严格的反爬机制导致的——即使添加了浏览器请求头,没有有效的登录会话Cookie,你的请求还是会被判定为非授权访问,从而跳转到验证墙。下面一步步分析问题并给出解决方案:
为什么当前代码无法绕过验证?
LinkedIn的反爬系统不仅仅检查User-Agent,还会验证请求是否来自一个已登录的有效会话:
- 未登录的请求(即使UA正确)会被直接重定向到authwall验证页面,也就是你看到的那段跳转JS。
- 仅靠请求头伪装不足以通过LinkedIn的身份验证,必须携带登录后的会话Cookie。
如何添加Cookie解决问题?
要获取有效的Cookie,你需要先在浏览器中登录LinkedIn,然后复制会话Cookie到代码中:
步骤1:从浏览器复制登录后的Cookie
- 打开Chrome/Firefox,登录LinkedIn并访问目标企业主页(比如
https://www.linkedin.com/company/biotech/)。 - 按下
F12打开开发者工具,切换到Network标签页。 - 刷新页面,找到第一个GET请求(就是当前页面的请求,URL和你要爬的一致)。
- 在该请求的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可能无法获取到内容,这时建议使用Selenium或Playwright模拟真实浏览器操作,它们能自动处理JS渲染和会话管理。
内容的提问来源于stack exchange,提问作者EatSleepCode




