js逆向解析,js爬虫

2023-11-03

废话不多说,直接开干~
吸取了百度精华,来写文章了!

难度系数:两颗星

大概逻辑:
1.请求url
2.找到请求参数
3.分析参数产生过程
4.整合参数

1.请求url

http://fanyi.youdao.com/

在这里插入图片描述

2.找到请求参数

在这里插入图片描述
在这里插入图片描述

3.分析参数产生过程

在这里插入图片描述

在这里插入图片描述

e: 输入的要翻译的内容。
ts: 当前时间戳字符串 [13]
salt: 时间戳字符串拼接上0-9 的随机整数。
bv: 将 User-Agent 经过 md5 加密之后的密文
sign: 将 “fanyideskweb” + e + i + "Tbh5E8=q6U3EXe+&L[4c@"经过 md5 加密之后的密文。

4.整合参数

直接上代码

# -*- coding:UTF-8 -*-
import random
import time
import hashlib
import requests

class YoudaoCrawl(object):

    def __init__(self, word):
        """初始化方法"""
        self.url = " http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36",
            "Cookie": 'OUTFOX_SEARCH_USER_ID=961608101@10.169.0.82; JSESSIONID=aaa6iBvh3WJaGgn8RPGBx; OUTFOX_SEARCH_USER_ID_NCOO=1574258758.1928287; ___rl__test__cookies=1610087834528',
            "Referer": "http://fanyi.youdao.com/"
        }
        self.word = word
        self.post_body = {}

    def genrator_post_body(self):
        """生成请求体字典方法"""
        # 1:拿到13位的时间戳
        ts = str(int(time.time()*1000))
        # 2: 得到salt = 13位时间戳+1位随机值
        salt = ts + str(random.randint(0, 10))
        # 3: 得到sign = 两个字符串 + 被翻译的值 + 盐值
        sign_str = "fanyideskweb" + self.word + salt + "Tbh5E8=q6U3EXe+&L[4c@"
        # 4: 将sign_str 用md5进行加密:
        md5 = hashlib.md5()
        md5.update(sign_str.encode())
        sign = md5.hexdigest()
        self.post_body = {
            "i": self.word,
            "from": "AUTO",
            "to": "AUTO",
            "smartresult": "dict",
            "client": "fanyideskweb",
            "salt": salt,
            "sign": sign,
            "ts": ts,
            "bv": "b286f0a34340b928819a6f64492585e8",
            "doctype": "json",
            "version": "2.1",
            "keyfrom": "fanyi.web",
            "action": "FY_BY_REALTlME"
        }

    def send_request(self):
        """发送请求的方法"""
        response = requests.post(self.url, headers=self.headers, data=self.post_body)
        return response.json()

    def parser_response(self, ret_dict):
        # 从字典中提取翻译结果
        # jsonpath:  $..src
        ret = ret_dict["translateResult"][0][0]["tgt"]
        print("翻译的文本:{} 翻译的结果:{}".format(self.word, ret))


    def run(self):
        """运行函数"""
        self.genrator_post_body()
        ret_dict = self.send_request()
        self.parser_response(ret_dict)

if __name__ == '__main__':
    data = input("请输入参数:")
    spider = YoudaoCrawl(data)
    spider.run()

运行结果:
在这里插入图片描述

公众号:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js逆向解析,js爬虫 的相关文章

随机推荐

  • DDD领域驱动篇——第一章(一文带你领略DDD、微服务和中台设计)

    在讲DDD之前 我对领域驱动曾经有过一段时间的了解 其实这个概念当我第一次听的时候发现很泛化 而且很抽象甚至难以理解 后来我发现这个玩意得需要很多时间 很多框架 技术的演进 软件迭代到了一定的瓶颈 业务愈发复杂而带来一系列架构转变和业务重构
  • 【JavaEE】图书管理系统-简易版

    文章目录 book包 Book类 BookList类 operation包 AddOperation 类 BorrowOperation 类 DelOperation类 DisplayOperation 类 ExitOperation 类
  • 智慧文本Supertext:错失千万,标书中的一字之差到底有多可怕?

    一招不慎 满盘皆输 这句话对于经常会参与投标工作的朋友来说 或许深有同感 国内一家企业投标 因为业务人员的疏忽 将 投标书 投标人名字中的 张 写成了 章 因为这一字之差 让这家极具竞争力的企业陷入争议 最终与成功失之交臂 在投标工作的准备
  • python 抓取alexa数据

    要抓取http www alexa cn rank baidu com网站的排名信息 例如抓取以下信息 需要微信扫描登录 因为这个网站抓取数据是收费 所以就利用网站提供API服务获取json信息 上面的API KEY值需要花钱买的 注意开通
  • 最新最新通信工程毕业设计题目选题推荐100例

    文章目录 1前言 2 如何选题 3 通信工程选题方向 2 1 移动通信方向 2 2 嵌入式开发方向 2 3 人工智能方向 2 4 物联网方向 2 5 算法研究方向 2 6 移动应用开发方向 2 7 网络通信方向 3 4 学长作品展示 1前言
  • 使用Docker实现持续集成

    使用Docker实现持续集成 基于Docker的特征 现在常见的利用Docker进行持续集成的流程如下 开发者提交代码 触发镜像构建 构建镜像上传至私有仓库 镜像下载至执行机器 镜像运行 其基本拓扑结构如图1所示
  • JSP实现等腰杨辉三角,你真的了解杨辉三角吗?

    jsp实现等腰杨辉三角 什么是杨辉三角 java实现杨辉三角 jsp实现杨辉三角 在jsp实现之前 先了解一下什么是杨辉三角 再通过java实现一下杨辉三角 最后通过jsp实现等腰杨辉三角 什么是杨辉三角 杨辉三角形 又称贾宪三角形 帕斯卡
  • 发布一个开源的新闻api(整理后就开源)

    目录 说明 基础说明 其他说明 通用接口 登录 注册 更改密码 需要token 更换头像 需要token 获取用户列表 需要token 上传文件 5000端口 获取文件 5000端口 源码文件 db文件均不能获取 验证token 需要tok
  • Java技术——内部类

    内部类 inner class 定义 在一个类中定义另外一个类 这个类就叫做内部类 优点 内部类可以让我们将逻辑上相关的一组类组织起来 并由外部类来控制内部类的可见性 当我们建立一个内部类时 其对象 就拥有了与外部类对象 之间的一种关系 这
  • pid算法C语言实现

    理论我就不多说了 网都已经很多了 但能直接看到效果的确不多 这里我就提供一个 语言实现的可以看到效果的实际例程 pid h ifndef PID H define PID H typedef struct pid int error las
  • [1023]fastText文本分类算法

    文章目录 简介 模型架构 分层 softmax Hierarchical softmax N grams 特征 使用 fastText 运行速度快的原因 fasttext参数 github https github com facebook
  • 如何利用《新概念英语》练习听力?

    新概念英语 是很好的教材 如何将它变成优秀的听力材料呢 第一步 不要看书 将整篇课文听写下来 如果有的词听不出来 猜测该词应该是什么 实在听不出来就不勉强 随着听写的增多 听力会逐渐增强 在听的过程中 也可加深对英语发音的认识 而且实践证明
  • 【论文翻译-2】BiO-Net: Learning Recurrent Bi-directional Connections for Encoder-Decoder Architecture

    BiO Net Learning Recurrent Bi directional Connections for Encoder Decoder Architecture 源自 MICCAI2020 Medical Image Compu
  • Apache logs目录下找不到access_log文件

    目录 一 实验 1 Apache logs目录下找不到access log文件 一 实验 1 Apache logs目录下找不到access log文件 1 问题 apache服务器logs目录下 没有access log文件 2 解决方法
  • Python学习笔记之几点代码格式要求

    1 缩进 通常我们都是用Tab制表符进行代码缩进 但是标准来说是要用4个空格进行缩进 如果代码工具可以设置按Tab自动转换为4个空格 那就设置一下吧 想想之前写的代码没有用4个空格 代码规范很重要 在需要缩进的地方都使用四个空格 可提高可读
  • 【LSTM分类】基于注意力机制的卷积神经网络结合长短记忆神经网络CNN-LSTM-attention实现数据分类附matlab代码

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab仿真内容点击 智能优化算法 神经网络预测 雷达通信 无线传感器 电力系统 信号
  • 爬虫手册04 Splash的使用

    Splash的使用 目标 作为Selenium的备选方案 加载js渲染后的浏览器数据 安装方法 https blog csdn net weixin 40743639 article details 122833394 spm 1001 2
  • 《英语(二)》作文案例

    翻译文章 1 More than twenty years ago my hometown was just a small old and poor town Most of people were farmers There were
  • GLES3.0中文API-glGetQueryObjectuiv

    名称 glGetQueryObjectuiv 返回查询对象的参数 C规格 void glGetQueryObjectuiv GLuint id GLenum pname GLuint params 参数 id 指定查询对象的名称 pname
  • js逆向解析,js爬虫

    废话不多说 直接开干 吸取了百度精华 来写文章了 难度系数 两颗星 大概逻辑 1 请求url 2 找到请求参数 3 分析参数产生过程 4 整合参数 1 请求url http fanyi youdao com 2 找到请求参数 3 分析参数产