试题链接:
http://wquan.moojing.com/quiz/index.html
源代码:
import re
import time
import requests
from lxml import etree
now_time_tamp = int(time.time() * 1000)
class Mojing(object):
def __init__(self):
self.baseurl = 'http://wquan.moojing.com/quiz/index.html'
def getItemList(self):
# 获取首页
rous = requests.get(self.baseurl)
rous.encoding = 'utf-8'
# lxml解析
html = etree.HTML(rous.text)
item_list = html.xpath('/html/body/div[1]/li/text()')
# 解析结果
print("lxml解析结果: ", item_list)
def get_ajax_data(self, sign, itemid):
url = 'http://wquan.moojing.com/get_data?itemid=' + str(itemid) + '&time=' + str(now_time_tamp) + '&sign=' + sign
head = {
'Connection': 'keep-alive',
'Host': 'wquan.moojing.com',
'Referer': 'http://wquan.moojing.com/quiz/index.html',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest',
}
# http://wquan.moojing.com/get_data?itemid=595843737123&time=1623398059822:>:=98<8<678jfx~6;788>=5:>=77
rous = requests.get(url, headers=head)
print("Ajax请求返回值: ", rous.text)
skuids = re.findall('skuId=.\d+', rous.text)
print("匹配到的skuid值: ", skuids)
def get_ajax_sign(self):
# itemid = '595843737123'
# 将itemid设为12345678
itemid = '12345678'
# item_id参数 , 时间戳参数
str_longs = str(itemid) + 'easy' + str(now_time_tamp)
print("被加密字符串", str_longs)
str_end = ''
# 遍历字符串 对应ascii码+5 再返回其对应字符串
for str_long in str_longs:
str_end = str_end + chr(ord(str_long) + 5)
print("sign算法结果:", str_end)
self.get_ajax_data(str_end, itemid)
Mojing().getItemList()
Mojing().get_ajax_sign()
运行结果: