声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢!
@TOC
前言
地址:aHR0cHM6Ly9tLnFjYy5jb20v
一、获取生成cookie的JS
注意:qcc手机端访问过多会使用IP异常,无法返回生成cookie的JS,需要添加代理请求
二、acw_sc__v2的生成
qcc主要的cookie就是这个acw_sc__v2参数,我们来看下之前返回的JS里是如何生成这个cookie的,进来一看,发现还是sojson混淆的,如果看着麻烦的话可以反混淆一下。
反混淆后,可以清晰的看到acw_sc__v2生成的方法,是在这个L里面
然后分析一下方法里面的东东,他自写了String的hexXor和unsbox两个方法,之后运行就能得到acw_sc__v2的值了
三、测试cookie
import requests,re,execjs
from lxml import etree
headers = {
'authority': 'm.qcc.com',
'cache-control': 'max-age=0',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36',
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'navigate',
'sec-fetch-user': '?1',
'sec-fetch-dest': 'document',
'referer': 'https://m.qcc.com/',
'accept-language': 'zh-CN,zh;q=0.9',
}
with open('./qcc.js',encoding='utf8') as f:
js_func = execjs.compile(f.read())
session = requests.session()
response = session.get('https://m.qcc.com/', headers=headers)
cookies = requests.utils.dict_from_cookiejar(response.cookies)
# print(response.text)
print('起始cookie:',cookies)
try:
arg1 = re.compile("arg1='(.*?)'").findall(response.text)[0]
print('生成cookie的参数:',arg1)
acw_sc__v2 = js_func.call('get_acw_sc__v2', arg1)
cookies['acw_sc__v2'] = acw_sc__v2
print('更新cookie:', cookies)
response = session.get('https://m.qcc.com/search?key=阿里巴巴', headers=headers, cookies=cookies)
# print(response.text)
except Exception:
print('无需更新cookie')
response = session.get('https://m.qcc.com/search?key=阿里巴巴', headers=headers)
# print(response.text)
# print(response.text)
hrefs = re.compile('<a href="(.*?)" onclick="zhugeTrack.*?class="a-decoration "').findall(response.text)
# print(hrefs)
if len(hrefs) != 0:
res = session.get('https://m.qcc.com/'+hrefs[0], headers=headers, cookies=cookies)
# print(res.text)
sel = etree.HTML(res.text)
name = sel.xpath('/html/body/div[1]/div[2]/div[1]/div[1]/h1/text()')[0].replace('\n','').strip()
print(name)
phone = sel.xpath('/html/body/div[1]/div[2]/div[1]/div[3]/a[1]/text()')[0].replace('\n','').strip()
print(phone)
email = sel.xpath('/html/body/div[1]/div[2]/div[1]/div[3]/a[2]/text()')[0].replace('\n','').strip()
print(email)
addr = sel.xpath('/html/body/div[1]/div[2]/div[1]/div[4]/text()')[0].replace('\n','').strip()
print(addr)
summary = sel.xpath('/html/body/div[1]/div[2]/div[1]/div[5]/text()')[0].replace('\n','').strip()
print(summary)
else:
print('cookie异常')
print(response.text)
复制代码