基于猫影电影的js逆向

 

首先是js逆向

orderType = 0
uuid = "18953ca9f19c8-0eaf202d6b863a-26031d51-144000-18953ca9f1ac8"
timeStamp = int(time.time() * 1000)
key = "A013F70DB97834C0A5492378BD76C53A"
UA = "TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExNC4wLjAuMCBTYWZhcmkvNTM3LjM2"

index = 1000 * random.random() + 1
enstr = f"method=GET&timeStamp={timeStamp}&User-Agent={UA}&index={index}&channelId=40009&sVersion=2&key={key}"
signKey = hashlib.md5(enstr.encode(encoding='utf-8')).hexdigest()
url = f"https://piaofang.maoyan.com/dashboard-ajax?orderType=0&uuid={uuid}&timeStamp={timeStamp}&User-Agent={UA}&index={index}&channelId=40009&sVersion=2&signKey={signKey}"
headers = {
    "Accept": "application/json, text/plain, */*",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
    "Referer": "https://piaofang.maoyan.com/dashboard"
}

其次是字体

font = ImageFont.truetype('font.woff', 40)
for uchar in uni_list[:10]:
    unknown_char = f"\\u{uchar[3:]}".encode().decode('unicode_escape')
    im = Image.new(mode='RGB', size=(42, 40), color="white")
    draw = ImageDraw.Draw(im=im)
    draw.text(xy=(0, 0), text=unknown_char, fill=0, font=font)
    img_byte = io.BytesIO()
    im.save(img_byte, format='JPEG')
    charList.append(ocr.classification(img_byte.getvalue()))

然后是字体一对一的与网站爬取的相对应,这里我用的是调用函数

def func(d):
    for i in range(0, 10):
        if d == new_lower_list[i]:
            d = dict_list[i]
            w.append(d[new_lower_list[i]])

    for p in num1:
        func(p)

以下是源码:代码很乱

import io
import random
import hashlib
import requests
import time
import re
from fontTools.ttLib import TTFont
from PIL import Image, ImageFont, ImageDraw
import ddddocr

ocr = ddddocr.DdddOcr()
orderType = 0
uuid = "18953ca9f19c8-0eaf202d6b863a-26031d51-144000-18953ca9f1ac8"
timeStamp = int(time.time() * 1000)
key = "A013F70DB97834C0A5492378BD76C53A"
UA = "TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExNC4wLjAuMCBTYWZhcmkvNTM3LjM2"

index = 1000 * random.random() + 1
enstr = f"method=GET&timeStamp={timeStamp}&User-Agent={UA}&index={index}&channelId=40009&sVersion=2&key={key}"
signKey = hashlib.md5(enstr.encode(encoding='utf-8')).hexdigest()
url = f"https://piaofang.maoyan.com/dashboard-ajax?orderType=0&uuid={uuid}&timeStamp={timeStamp}&User-Agent={UA}&index={index}&channelId=40009&sVersion=2&signKey={signKey}"
headers = {
    "Accept": "application/json, text/plain, */*",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
    "Referer": "https://piaofang.maoyan.com/dashboard"
}
response = requests.get(url=url, headers=headers)
# response.encoding = "utf-8"
# page_text = response.text
fonturl = 'http:' + re.search('opentype"\),url\("(//.*?\.woff)"', response.json()['fontStyle']).group(1)
r = requests.get(url=fonturl)
with open('font.woff', 'wb') as f:
    f.write(r.content)
    f.close()
tfont = TTFont('font.woff')
uni_list = tfont.getGlyphOrder()[2:]
lower_list = [element.lower() for element in uni_list]
print('uni列表', uni_list)
print('lower_list', lower_list)
charList = []
new_lower_list = []
dict_list = []
w = []


def func(d):
    for i in range(0, 10):
        if d == new_lower_list[i]:
            d = dict_list[i]
            w.append(d[new_lower_list[i]])
            # print("-----",d,d[new_lower_list[i]])


for i in lower_list:
    a = "&#x" + i.replace("uni", "")
    new_lower_list.append(a)
print('new_lower_list------', new_lower_list)
font = ImageFont.truetype('font.woff', 40)
for uchar in uni_list[:10]:
    unknown_char = f"\\u{uchar[3:]}".encode().decode('unicode_escape')
    im = Image.new(mode='RGB', size=(42, 40), color="white")
    draw = ImageDraw.Draw(im=im)
    draw.text(xy=(0, 0), text=unknown_char, fill=0, font=font)
    img_byte = io.BytesIO()
    im.save(img_byte, format='JPEG')
    charList.append(ocr.classification(img_byte.getvalue()))
print('对应字符', charList)
page_dict = response.json()
print(len(page_dict['movieList']['data']['list']))
for i in page_dict['movieList']['data']['list']:
    movieName = i['movieInfo']['movieName']
    num = i["boxSplitUnit"]["num"] + i["boxSplitUnit"]["unit"]
    # 上映天数
    releaseInfo = i["movieInfo"]["releaseInfo"]
    # 排片场次
    showCount = i["showCount"]
    num1 = num.replace(".", "").split(";")
    # print("列表的票房num1",num1)
    for i in range(0, 10):
        dict = {new_lower_list[i]: charList[i]}

        dict_list.append(dict)

    for p in num1:
        func(p)
    new_num1 = ''.join(w)
    # print(new_num1)
    new_num2 = new_num1[0:-2] + '.' + new_num1[-2:]
    w.clear()
    print(f"电影名字:{movieName},综合票房:{new_num2}万,上映天数:{releaseInfo},排片场次:{showCount}")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您下载了本程序,但是该程序存在问题无法运行,那么您可以选择退款或者寻求我们的帮助(如果找我们帮助的话,是需要追加额外费用的)。另外,您不会使用资源的话(这种情况不支持退款),也可以找我们帮助(需要追加额外费用) 爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值