【Python网络爬虫】企查查批量查询接口爬虫

写在前面:

  1. 本文所介绍的企查查爬虫代码需要用到cookie,且cookie所对应的账号需要为vip或以上等级具有高级搜索和批量查询的功能,无此功能的账号暂不支持;
  2. 本文所介绍的是在其他人分析了前端headers哈希加密后的基础上的进一步补充和完善,并会提供完整的请求代码;
  3. 本文所提供的逻辑和代码仅供学习交流,严禁用于商业或非法用途,否则由此产生的一切后果均与作者无关。

企查查批量查询入口:

一. headers前端逆向加密

https://gxzv.com/blog/qcc_headers_hash/?f=readme该篇文章中,博主已详细介绍和解释了企查查高级查询中的headers哈希加密的逻辑,并给出了核心破解代码,另外,在本人上一篇文章https://blog.csdn.net/moyuweiqing/article/details/128702742中,给出了参数win_pid的生成方法,并给出了pid和tid的获取方法,在本部分,将会给出关于该哈希加密的进一步解释。

该章节以下部分的理解需要读者预先阅读上诉两篇文章,对于企查查headers哈希解密的了解。

在http请求中,主要包含两种方式,一种是get请求另一种是post请求,在post请求中,请求headers中的哈希加密参数的生成a_default()函数和r_default()函数中生成,函数中的其中一个参数名为data,此时,data为post请求中的数据,为字典类型;
但在get请求中,由于和post请求不一样,数据中并没有data部分的内容,因此,在get请求中,headers中哈希加密参数的生成不需要传递参数data,或者data的值为默认值,即为空字典。

简单来说,就是以下的区别:

post请求和get请求的a_default()函数和r_default():

def a_default(url: str = '/', data: object = {}):
    url = url.lower()
    dataJson = json.dumps(data, ensure_ascii=False, separators=(',', ':')).lower()

    hash = hmac.new(
        bytes(seeds_generator(url), encoding='utf-8'),
        bytes(url + dataJson, encoding='utf-8'),
        hashlib.sha512
    ).hexdigest()
    return hash.lower()[8:28]

def r_default(url: str = '/', data: object = {}, tid: str = ''):
    url = url.lower()
    dataJson = json.dumps(data, ensure_ascii=False, separators=(',', ':')).lower()

    payload = url + 'pathString' + dataJson + tid
    key = seeds_generator(url)

    hash = hmac.new(
        bytes(key, encoding='utf-8'),
        bytes(payload, encoding='utf-8'),
        hashlib.sha512
    ).hexdigest()
    return hash.lower()

post请求中对于a_default()函数和r_default()的调用:

	key = a_default(req_url, data)
    val = r_default(req_url, data, tid)
    headers[key] = val

get请求中对于a_default()函数和r_default()的调用:

	key = a_default(req_url)
    val = r_default(req_url, tid=tid)
    headers[key] = val

对于其他的参数,像是req_url和pid、tid的生成,在引用的文章中有提及,本文不再复述。


二. 异步请求过程

企查查在批量请求中并不是单个post请求即可以获取到所有数据的,通过开发人员工具可以看出,这是一组组合请求,通过其请求名可以看出,应该是将需要查询的数据以批次的方式请求到Redis里面,再通过post请求获取到简易数据和明细数据(具体的请求机制我也不是很清楚,纯猜测)。

需要区分各个请求之间的差异,涉及到headers哈希加密调用函数的方式不同,也涉及到调用函数时传递的url不一样。

另外,在请求的过程中,由于需要vip账号的cookie,里面会对单个账号有不定时验证要求和访问次数限制,本人测试中,总明细查询达到约1000-2000次即达到单个账号的单日访问上限。


三. 文章引用和代码

引用文章:

https://gxzv.com/blog/qcc_headers_hash/?f=readme

https://blog.csdn.net/moyuweiqing/article/details/128702742

代码链接:

https://github.com/moyuweiqing/qcc_searchmulti

要使用Python爬虫来进行查查的数据获取,你首先需要获取到对应的pid和tid。这部分可以通过发送HTTP请求并解析返回的页面来实现。你可以使用Python的requests库发送GET请求,并设置合适的请求头和cookie来模拟登录状态。然后,你可以使用正则表达式或其他方法从返回的页面中提取pid和tid的值。这样,你就可以在后续的请求中使用这些值来获取查查的数据了。 另外,关于Python电影爬虫的数据统计展示案例,你可以以豆瓣电影TOP250为例进行演示。你需要抓取每一部电影的名字、描述信息(包括导演、主演、电影类型等等)、评分以及电影中最经典的部分。你可以使用Python爬虫库(如BeautifulSoup或Scrapy)来解析HTML页面,并提取所需的信息。然后,你可以将这些数据进行统计和展示,可以使用数据可视化库(如matplotlib或seaborn)来创建图表和图像来呈现数据。 需要注意的是,在进行查查爬虫时,你需要使用带有vip或以上等级的账号,并且该账号具有高级搜索和批量查询的功能。如果账号没有这些功能,则无法支持查查爬虫。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【Python网络爬虫查查高级搜索及批量查询接口爬虫](https://blog.csdn.net/moyuweiqing/article/details/128702742)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Python电影爬虫数据统计展示案例](https://download.csdn.net/download/whirlwind526/88261868)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

moyuweiqing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值