寫在前面:
本文所介紹的企查查爬蟲代碼需要用到cookie,且cookie所對應的賬號需要為vip或以上等級具有高級搜索和批量查詢的功能,無此功能的賬號暫不支持;
本文所介紹的是在其他人分析了前端headers哈希加密后的基礎上的進一步補充和完善,并會提供完整的請求代碼;
本文所提供的邏輯和代碼僅供學習交流,嚴禁用于商業(yè)或非法用途,否則由此產生的一切后果均與作者無關。
一. headers前端哈希逆向加密
本文所需要爬取的是企查查的高級搜索功能的預搜索和批量搜索兩個接口,分別為:
https://www.qcc.com/api/search/searchCount
https://www.qcc.com/api/search/searchMulti
在https://gxzv.com/blog/qcc_headers_hash/?f=readme 該篇文章中,博主已詳細介紹和解釋了企查查高級查詢中的headers哈希加密的邏輯,并給出了核心破解代碼,本部分將會在這基礎上進行補充。
引用的文章中有一個這個參數(shù)并沒有給出詳細的思路和解決方案:

在引用的文章中,這個win_tid是一個寫死的參數(shù),且是作為r_default函數(shù)的一個參數(shù)進行傳遞的,用于生成哈希參數(shù)鍵值對里面的value。但實際上這個win_tid參數(shù)并不是寫死的,而是通過前面的http請求預先獲取的:


通過在前端數(shù)據(jù)關鍵詞查詢,我們發(fā)現(xiàn),在https://www.qcc.com/web/search/advance?hasState=true 這個請求中,返回的html數(shù)據(jù)中含有pid和tid參數(shù),并且是傳入到window對象中,tid是通過傳入到r_default函數(shù)中的一個參數(shù),而pid則是數(shù)據(jù)接口請求中headers的x-pid部分:

因此,需要有一個前置的請求預先獲取這部分的pid和tid,代碼如下:
import requests
import re
cookie = ''
def get_pid_tid():
url = 'https://www.qcc.com/web/search/advance?hasState=true'
headers = {
'accept-encoding': 'gzip, deflate, br'
,'accept-language': 'zh-CN,zh;q=0.9'
,'cache-control': 'max-age=0'
,'cookie': cookie
,'referer': 'https://www.qcc.com/'
,'sec-fetch-dest': 'document'
,'sec-fetch-mode': 'navigate'
,'sec-fetch-site': 'same-origin'
,'sec-fetch-user': '?1'
,'upgrade-insecure-requests': '1'
,'user-agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'''
}
res = requests.get(url, headers=headers).text
try:
pid = re.findall("pid='(.*?)'", res)[0]
tid = re.findall("tid='(.*?)'", res)[0]
except:
pid = ''
tid = ''
return pid, tid
二. 數(shù)據(jù)獲取和注意事項
通過接口返回的數(shù)據(jù)為json結構,只需要調用json庫就可以清理數(shù)據(jù)。
需要注意,哈希加密中,需要傳入的參數(shù)有:url、data、tid三個部分。
url為其中一個傳入的參數(shù),在兩個請求中,該參數(shù)并不一樣,在searchcount的api中,url為/api/search/searchcount;在searchmulti中,url為/api/search/searchmulti
另外,data作為其中的一個參數(shù),在兩個api中的請求亦有所不同,searchcount中的data含有"count": True的部分,searchmulti中并無該部分,兩個data的參數(shù)請求有不一樣的地方。
三. 文章引用和代碼
參考文章:https://gxzv.com/blog/qcc_headers_hash/?f=readme文章來源:http://www.zghlxwxcb.cn/news/detail-437727.html
代碼鏈接:https://github.com/moyuweiqing/qcc_searchmulti文章來源地址http://www.zghlxwxcb.cn/news/detail-437727.html
到了這里,關于【Python網絡爬蟲】企查查高級搜索及批量查詢接口爬蟲的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!