本文目录

  • 前言
  • 案例
    • 难点
      • 参数加密
      • IP封禁
    • 代码解析
  • 翻译评论
    • 完整代码
  • 成果
  • 最后

前言

想要更进一步了解爬虫领域,学Js肯定是必不可少的,怎么说呢?现在大部分网站开始对数据层层加密,导致我们要花费大量的精力去研究,如果不了解的话,甚至连入口都找不到!这时候就会有人说:用selenium不就行了,确实没问题,但是要想想效率高吗?要是10w+的数据量,那得跑多久?如果生产使用,你要怎么办?你跟老板说,机器慢我也没办法?回到主题,js逆向没有固定的方法论,所以也没有一定的解决方法,只能见招拆招

案例

最近因工作原因需要抓一些产品评论,但是评论都是英文的,加上本人英语较烂,还得借助翻译,总不能手动一条一条翻译吧,所以我找了一个免费的翻译接口(有道翻译),分享给大家!!!

难点

总而言之,言而总之!直接步入正题

参数加密


第一步:打开检查,点击XHR,下面跳出来一个请求接口,看看里面有哪些参数?除了我标注的以外,其他参数一律都是加密过的,需要找到加密方法,然后自动生成。

第二步:通过全局搜索,随便搜索一个加密参数,找到加密的Js文件后打开原文件。

第三步:打开js原文件后,点击格式化js,标注的大括号。

第四步:Ctrl+F搜索刚刚加密的参数,我们可以找到加密方法,然后打上断点,进行调式。

第五步:通过调式,发现其中加密参数,与之前请求的一致,可以肯定,这就是加密方法!

第六步:一些函数方法,可能很多小伙伴不知道什么意思,我们可以在控制台上运行,来进行判断,我已经帮大家打印出来了,还有不懂的可以自己动动手。

 import js2pyr = js2py.eval_js('(new Date).getTime()')  # 时间戳bv = str(md5('5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'))  # md5加密请求头ts = str(r) salt = ts + str(random.randint(0,10))  # 时间戳 + 一个随机整数sign = md5("fanyideskweb" + e + salt + "Ygy_4c=r#e#4EX^NUGUc5")  # 签名加密body = {'i': e,  # e是你输入的文字,比如我输入love'from': 'AUTO', 'to': 'AUTO','smartresult': 'dict','client': 'fanyideskweb','salt': salt,'sign': sign,'lts': ts,'bv': bv,'doctype': 'json','version': '2.1','keyfrom': 'fanyi.web','action': 'FY_BY_REALTlME'}  # 请求参数

第七步:我们将js代码转成成python代码,也可以通过js2py或者execjs来运行Js代码,因为加密比较简单,所以我通过转换代码,大家更容易理解!

IP封禁

翻译的文本较多,翻了一会发现报错,我就知道应该没那么简单,那就找找原因吧!其实只要经验比较丰富的朋友都知道,基本上就是IP封了。

上图显示,状态码:302,连网页都封了,这下就很容易解释了,好了,可以直接去购买代理了!!!

代理:我用的小象代理,不推荐大家用什么,自己觉得好用就行。

request调用

proxy_host = 'http-dynamic-S03.xiaoxiangdaili.com'
proxy_port = 10030
proxy_username = '*******'
proxy_pwd = '********'proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {"host": proxy_host,"port": proxy_port,"user": proxy_username,"pass": proxy_pwd,
}proxies = {'http': proxyMeta,'https': proxyMeta,
}try:res = requests.get(url=url, proxies=proxies)print(res.text)
except Exception as e:print e

代码解析

  • md5
def md5(value):x = hashlib.md5()x.update(value.encode('utf-8'))return x.hexdigest()
  • 请求参数
def from_data(e):r = js2py.eval_js('(new Date).getTime()')  # 时间戳bv = str(md5('5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'))  # md5加密请求头ts = str(r) salt = ts + str(random.randint(0,10))  # 时间戳 + 一个随机整数sign = md5("fanyideskweb" + e + salt + "Ygy_4c=r#e#4EX^NUGUc5")  # 签名加密body = {'i': e,  # e是你输入的文字,比如我输入love'from': 'AUTO', 'to': 'AUTO','smartresult': 'dict','client': 'fanyideskweb','salt': salt,'sign': sign,'lts': ts,'bv': bv,'doctype': 'json','version': '2.1','keyfrom': 'fanyi.web','action': 'FY_BY_REALTlME'}  # 请求参数return body
  • 爬取数据
def spider():headers = {'User-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36','Cookie':'OUTFOX_SEARCH_USER_ID=-1958836229@10.110.96.159; OUTFOX_SEARCH_USER_ID_NCOO=547250116.881104; ___rl__test__cookies=1657074774894','Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','Host': 'fanyi.youdao.com','Origin': 'https://fanyi.youdao.com','Referer': 'https://fanyi.youdao.com/',}url = 'https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'e = input('请输入要翻译的文本: ')all_list = [] # 创建一个空列表data = from_data(e)res = requests.post(url,headers=headers,data=data,proxies=proxies).json()text = res['translateResult'][0][0]['src']fanyi = res['translateResult'][0][0]['tgt']print(f'原文:{text},译文:{fanyi}')

翻译评论

这是我爬取的评论,然后保存到xlsx中

完整代码

import js2py
import hashlib
import random
import requests
import pandas as pd
import csvdef md5(value):x = hashlib.md5()x.update(value.encode('utf-8'))return x.hexdigest()def from_data(e):r = js2py.eval_js('(new Date).getTime()')bv = str(md5('5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'))ts = str(r)salt = ts+str(random.randint(0,10))sign = md5("fanyideskweb" + e + salt + "Ygy_4c=r#e#4EX^NUGUc5")body = {'i': e,'from': 'AUTO','to': 'AUTO','smartresult': 'dict','client': 'fanyideskweb','salt': salt,'sign': sign,'lts': ts,'bv': bv,'doctype': 'json','version': '2.1','keyfrom': 'fanyi.web','action': 'FY_BY_REALTlME'}return bodydef spider():proxy_host = 'http-dynamic-S03.xiaoxiangdaili.com'proxy_port = 10030proxy_username = '******8888'proxy_pwd = '88888888'proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {"host": proxy_host,"port": proxy_port,"user": proxy_username,"pass": proxy_pwd,}proxies = {'http': proxyMeta,'https': proxyMeta,}headers = {'User-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36','Cookie':'OUTFOX_SEARCH_USER_ID=-1958836229@10.110.96.159; OUTFOX_SEARCH_USER_ID_NCOO=547250116.881104; ___rl__test__cookies=1657074774894','Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','Host': 'fanyi.youdao.com','Origin': 'https://fanyi.youdao.com','Referer': 'https://fanyi.youdao.com/',}url = 'https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'df = pd.read_excel('翻译.xlsx',sheet_name='Sheet1')txt = df['评论内容']all_list = []for e in txt:data = from_data(e)res = requests.post(url,headers=headers,data=data,proxies=proxies).json()text = resfanyi = text['translateResult'][0][0]['src']to = text['translateResult'][0][0]['tgt']print(f'原文:{fanyi},译文:{to}')result = {}result['原文'] = fanyiresult['译文'] = toall_list.append(result)return all_listdef sava():with open('译文.csv','wt',encoding='utf8') as f:writer = csv.DictWriter(f,fieldnames=['原文','译文'])writer.writeheader()data = spider()writer.writerows(data)if __name__ == '__main__':sava()

成果


最后

点关注不迷路,本文章若对你有帮助,烦请三连支持一下 ❤️❤️❤️
各位的支持和认可就是我最大的动力❤️❤️❤️

【爬虫进阶】Js逆向——有道批量翻译文本相关推荐

  1. python3爬虫进阶JS逆向学习(十一)

    目的 目的:JS逆向的学习与交流 目标:分析咪咕音乐参数 目标网址:https://music.migu.cn/v3 // 若有侵权,请联系作者删除,谢谢! 思路分析 一.内容概览 二.请求参数分析 ...

  2. Python3爬虫进阶JS逆向学习(三)

    目的 目的:JS逆向的学习与交流 目标:分析某我音乐网站中加密参数 目标网址:http://www.kuwo.cn/ 思路分析 一.内容概览 思路分析: 1.发送请求,搜索指定歌曲. 2.对返回的歌单 ...

  3. python爬虫进阶js逆向实战 | 爬取 破解某安部加速乐cookie

    很久没有写技术性的文章了,最近打算更新一系列的js逆向实战 今天的网站是某安部的一个加密cookie的分析跟破解 aHR0cHM6Ly93d3cubXBzLmdvdi5jbi9uMjI1NDA5OC9 ...

  4. Python爬虫进阶--js逆向-某天下与某某二手房密码加密分析

    X天下密码加密分析 本次的受害者: aHR0cHM6Ly9wYXNzcG9ydC5mYW5nLmNvbS8= 分析 通过输入错误密码抓包查看加密字段.如下图: 直接通过检索pwd:定位加密位置如下图: ...

  5. Python爬虫之Js逆向案例(6)-某道翻译

    Python爬虫之Js逆向案例(6)-有道翻译 声明:某道翻译加密逆向分析仅用于研究和学习,如有侵权,可联系删除 大家好,距离上次分享js逆向案例已经有一个月了,在这期间每次在快要揭秘出来时.整理文章 ...

  6. Python爬虫之Js逆向案例(2)-某乎搜索

    Python爬虫之Js逆向案例(2)-知乎搜索 声明:某乎加密逆向分析仅用于研究和学习 大家好,今天继续分享关于某乎关键词搜索接口为案例的Js逆向实战.如果你是一名新手,而且还没有来得及看上一篇< ...

  7. Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接

    Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接 1. 前言 2. 实现过程 3. 运行结果 1. 前言 文章内容可能存在版权问题,为此,小编不提供相关实现代码,只是从js逆向说一说到 ...

  8. Python爬虫之Js逆向案例(8)-某乎x-zst-81之webpack

    声明:某乎加密逆向分析仅用于研究和学习,如有侵权,可联系删除 大家好,相信各位童鞋通过上期<Python爬虫之Js逆向案例(7)-知hu最新x-zse-96之rpc方案>这篇文章了解了什么 ...

  9. python 文本翻译 项目_如何用python批量翻译文本?

    首先,看一下百度翻译的官方api文档. http://api.fanyi.baidu.com/api/trans/product/apidoc # coding=utf-8 #authority:bi ...

最新文章

  1. dubbo接口测试_Django测试工具平台之Dubbo接口请求 + 前端
  2. 简单的一阶低通滤波器
  3. C/C++运行时库 解释
  4. java高并发(十一)同步容器
  5. zemax光学设计超级学习手册_穿越十年的一个ZEMAX光学设计案例
  6. 构建之法第四章--两人合作
  7. 常用Oracle分析函数详解
  8. timespan怎么比较大小_万能小哥丨厨房墙砖哪种好?厨房墙砖怎么挑选?
  9. EntityFramework 实体拆分与表拆分
  10. 微软 exFAT 技术将进入 Linux 内核
  11. pandownload事件_pandownload被执法背后是中国盗版的末路
  12. 软考信息安全工程师经验分享以及报考建议
  13. GCC编译器原理(一)------GCC 工具:addr2line、ar、as、c++filt和elfedit
  14. MySQL 中的定时任务
  15. 100 个常见的 PHP 面试题和答案分享
  16. python画一箭穿心_turtle的简单绘图
  17. 如何在中国高等教育学生信息网上在线查询自己的学历信息
  18. Mobile2.0不对等的战争
  19. 《炬丰科技-半导体工艺》SC1/SC2蚀刻后Si表面的分析
  20. iOS-image图片旋转方向

热门文章

  1. 高通QACT工具音频参数修改保存和验证
  2. VMware虚拟机桥接方式上网
  3. 曹操煮酒论英雄谈龙(转)
  4. 爬取的是最好大学网软科中国最好大学排名2019
  5. easypermission坑_Android EasyPermissions官方库高效处理权限相关教程
  6. 微信小程序--嘟嘟会议--会议发布和我的会议查看
  7. 用css、html、js模拟操作系统2
  8. (ICML-2020)通过超球面的对齐和均匀性理解对比表示学习(二)
  9. 语音怎么翻译成文字的?
  10. Docker shipyard 笔记