python爬取标签接口遇到的问题
请问针对这种接口带有加密字段的该怎么获取数据,我通过cookies发送还是不行,是我的操作问题吗?import requests
def get_company_label_with_cookies_and_payload(url, cookies, payload):
# 构造请求头,包含cookies信息
headers = {
'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'
}
# 发送 POST 请求并包含cookies信息和payload数据
response = requests.post(url, headers=headers, cookies=cookies, json=payload)
# 检查响应状态码
if response.status_code == 200:
return response.json()
else:
print("请求失败:", response.status_code)
return None
if __name__ == "__main__":
api_url = 'https://b-plugin.qixin.com/api/supplierApi/commonApi/entInfo/getEntLabel'
cookies = {
'flogger_fpid': 'd723afa6646f3f0b66bd9477f20daf9a',
'ssxmod_itna': 'YqUxBDgG5Dqx9Dl4iqYI7p0Fei=GOfQIQY042DBLfd4iNDnD8x7YDv+moO+K7KS0AWfGs0DSr3qNIjbqxpOb278XYDU4i8DCMuDQsxem=D5xGoDPxDeDADYE6DAqiOD7qDdfhTXtkDbxi3fxiaDGeDeEKODY5DhxDC0mPDwx0CfZ05QA9hO6BCTKy55FrPfxG1a40H1ASINU8LQmyhwF3GEiKDXEdDvayCS6cmDBbkMO5GZnnDTexNq7iesmRDOlq4K7Gi5chx1G05Qhx4HuDY1lcPljtDiaxqHAUDD=',
'ssxmod_itna2': 'YqUxBDgG5Dqx9Dl4iqYI7p0Fei=GOfQIQY04x8q18SqGXo=GaKSQmL7K1LKms/gSqtCaCch7Kzosjjb25=Moqidazt0BmfYMg8GNLeA2G5iLQ0=2CcCBmzuSTpqbkcHpIOkXanyvyhqxs6paZE5bKbuDspAYXZHkwgcw3fnWAxgO1cniWccGh=naqz9h0WPi3aBmSacmq47PwtA1a0EdWgOPZ=YaeQr8D2RqXicDynr8gpM=NfW8BaLQqavr91SOBxHf43W7ufo46=UbYBIPnlrYd1jyUMUbWaAf=PBXXvryQsC+fSMDKyvzHDsPmt9O35Ddm4up/05VUpxpy7jRxdnClpwWqQG0kA2eSGr4eXtAkI+liRE+5mS2mSDbR4q3TYfR9e+vSPNfAnBhvKpWjTNLY6CxNkE=E98zRR8b8bwRCAQFIlKyRlaokfqxRa1BFnf7ISM/GDxaU/iCCIZSDKu7U3FkSgXmaZzLv9T3P8HvyOzIZ/Gw/yO6PiuaxoExRa+3llb3V4wCppyjpoLbrkQaWa+2CsS0kL+t2HllaCIuqixDKwH3YFdqeduDBO4jI5ugcBY9RDxQDDLxD27GDD==',
'sid': 's%3A5Z2W1SCjv4KC14_o5Czj2DfNgcB99dbz.%2BBzQG9oEwrp%2B9R8vqznibZ7YgZE1dvhSHqIu4RqBFxI',
'aliyungf_tc': '53c02b50bd62534e99bbf7436ab0a2141ba1f02034c2a29135078e4be3eeee3f',
'acw_tc': 'ac11000117124532719681480e3ae5415231d55c62649491685d4b8b4233ae'
}
# 请求的payload数据
payload = {
'eid': 'feb3c224-9f4e-4a63-9b2b-d6caffc37d00'
}
# 发送请求并获取响应数据
result = get_company_label_with_cookies_and_payload(api_url, cookies, payload)
if result:
print(result)
之前我一直用的Selenium 我现在觉得效率太低了,还需要打开页面,等待接口加载完毕后才可以爬取,所以想改一下从接口直接cookies发送数据获取,然后cookies过期了刷新cookies再次重新获取 让浏览器和 Python 都走你的抓包程序(Charles / Fiddler 等),然后对比下二者的请求有什么不同。
你截图里的请求头对比你的代码缺了很多(Accept-Encoding 可以暂时无视)。如果你要直接从脚本请求,你要分析他网站是怎么计算的这些头,并补上。
当你用 Selenium 浏览器时,其实是直接进行网页交互,因此只需要分析如何触发的对应事件(模拟键盘输入、点击等),而不需要分析具体请求构造。 不需要通过cookie发送,甚至你的cookie只需要一起构造到headers里面就够了,requests的cookie参数我就没用过,都是直接header传值 jidesheng6 发表于 2024-4-7 10:23
不需要通过cookie发送,甚至你的cookie只需要一起构造到headers里面就够了,requests的cookie参数我就没用 ...
这样我试过,也不行,我总是感觉有加密字段的原因 Dellevin 发表于 2024-4-7 10:28
这样我试过,也不行,我总是感觉有加密字段的原因
那个字段可能是动态生成的key,传输的时候动态带过去的 试试打个xhr或者跟一下值 看看他是怎么生成的 可能会有动态值在里面 逆向看看 jidesheng6 发表于 2024-4-7 10:29
那个字段可能是动态生成的key,传输的时候动态带过去的
我看别人说需要js逆向,我还没接触过,我看sources里面一个资源都没有 我一直困惑,为什么爬数据大家选用python,用python也需要去解读网页中的js
那为什么不直接用js来获取数据呢,直接用js可以直接改写原网页中的代码,可以省去很多逆向的复杂问题。 Pwaerm 发表于 2024-4-7 10:55
我一直困惑,为什么爬数据大家选用python,用python也需要去解读网页中的js
那为什么不直接用js来获取数 ...
python对新手比较简单吧,而且库比较多。。。 Dellevin 发表于 2024-4-7 10:58
python对新手比较简单吧,而且库比较多。。。
我的意思,爬取网络数据,多数都要基于js逆向。
能读懂并且逆向js,也不算新手呀。
纯粹的新手,仅会python也爬不了数据吧。