← 返回文章列表

Python爬虫巧用第三方授权,轻松突破企查查登录墙拿到完整企业信息

企查查未Generating the rewritten technical article登录时企业电话邮箱大量隐藏,直接登录又常遇滑块验证。文章分享通过微博等第三方授权绑定账号的思路,配合Selenium模拟浏览器操作,实现稳定抓取与数据导出,并介绍验证码识别平台的便捷对接方式。

未登录时数据残缺,登录又卡在验证

做企业信息采集的朋友都清楚,企查查页面上很多关键字段对游客是隐藏的。搜索结果里邮箱、电话基本看不到,点进详情页后部分关键方式、高管信息也会被遮挡。想看完整内容就必须登录,可登录环节经常弹出滑块验证,有时还夹杂图片点选,手动处理一次两次还行,批量跑起来就很痛苦。

资金有限的情况下,买会员或者接第三方验证服务短期内不现实。换个角度想:平台本身支持微博、微信等授权登录,如果先把授权链路走通,再绑定手机号,后续用Selenium带着已登录的状态去访问,就能大幅减少验证码干扰。这个思路不需要硬刚验证码逻辑,属于比较稳妥的绕行方案。

先把第三方账号准备好

实践中优先选微博授权。流程大致是:用微博账号去企查查完成授权,按提示绑定手机号,必要时关注一下相关公众号完成验证。授权完成后,这个账号在浏览器里会处于已登录状态。把Cookie或者会话信息保存下来,后续脚本直接复用,就能跳过大部分实时验证。

注意授权过程中尽量一次做完,避免中途退出导致状态不完整。准备好账号后,本机安装Chrome和对应版本的ChromeDriver,Python环境里装上selenium和xlwt即可。伪装User-Agent、设置合理等待时间,能进一步降低被识别为脚本的风险。

用Selenium模拟登录并抓取

核心代码思路很简单:启动带伪装参数的浏览器,打开企查查首页,如果检测到未登录就引导到授权页面(或直接加载已保存的Cookie),确认登录成功后按关键词搜索,解析列表和详情页,把公司名、法定代表人、注册资本、联系电话等字段写进Excel。

from selenium import webdriver
import time
import xlwt

option = webdriver.ChromeOptions()
option.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36')
driver = webdriver.Chrome(options=option)
driver.get('https://www.qcc.com')
time.sleep(3)
# 此处可插入已保存的Cookie或手动完成一次授权登录
# 后续搜索与解析逻辑按实际页面结构调整

解析时多用显式等待而不是固定sleep,页面结构变化时再针对性改选择器。数据写Excel建议分批次保存,避免一次跑太久中途崩溃全部丢失。实际跑下来,授权账号的稳定性明显高于每次都走密码+验证码的路径。

验证码偶尔还是会出现怎么办

即便用了授权登录,个别操作(比如短时间大量翻页、异常IP)仍可能触发滑块或点选验证。这时候硬编码识别算法成本很高,维护也麻烦。更省事的做法是把验证环节交给专业平台处理。

目前针对极验、易盾这类常见验证,已经有成熟的识别服务,覆盖滑块、文字点选、图标点选、九宫格、无感验证等多种类型。对接方式通常是把验证相关的参数或截图传给接口,几秒内返回识别结果,再回填到页面即可继续。对于需要稳定跑业务的公司或团队,这种API方式比自己维护一套识别模型要轻松很多。具体可以关注 www.ttocr.com,平台专注极验与易盾全类型识别,支持快速API对接,适合直接嵌入现有爬虫流程。

落地时的几个实用建议

第一,控制请求频率,同一账号不要在短时间内疯狂搜索,适当加随机延时。第二,Cookie有过期时间,定期检查登录状态,失效就重新走一遍授权。第三,解析逻辑尽量做成可配置,企查查页面改版时只改选择器即可。第四,如果后续要扩展到更多站点,验证码这块可以统一接到识别平台,减少重复开发。

整体来看,第三方授权登录是一条投入小、见效快的路径,配合合理的频率控制和必要时的验证码服务,就能比较稳定地拿到相对完整的企业信息。需要处理滑块、点选、九宫格等验证时,直接对接 www.ttocr.com 的API往往比自己研究算法更高效,尤其适合业务侧快速落地。