范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Python爬虫破解有道翻译

  有道翻译是以异步方式实现数据加载的,要实现对此类网站的数据抓取,其过程相对繁琐,本节我以有道翻译为例进行详细讲解。
  通过控制台抓包,我们得知了POST请求的参数以及相应的参数值,如下所示:post请求参数
  并发现以下了规律:salt、sign、lts总是变化的,而bv等其他参数是不变化的。其中lts代表毫秒时间戳,salt和lts之间存在着某种关联,因为两者只有最后一个数字是不同的;而sign对应的值是一个加密后的字符串。
  如果想要实现实时地抓取翻译结果,就需要将salt和sign转换为用Python代码表示的固定形式。最后将所有参数放入到requests.post()中,如下所示:response = requests.post(url,data=data,headers=headers)1复制代码类型:[python]
  其中data是字典格式参数,它用来构建POST请求方法的参数和参数值。JS代码slat与sign
  salt、sign加密有两种实现方式:一种是通过前端JS实现,另一种是后台服务器生成加密串,并在返回响应信息时,将加密信息交给接浏览器客户端。但是,通过预览响应信息可知,并没有涉及salt、sign的信息,因此可以排除这种方法。
  那么要如何找到关于salt、sign的JS代码呢?此时就要用到另外一个调试工具选项卡——JS。如下图所示:
  点击上图所示的搜索按钮来检索JS代码,输入"salt",结果如图所示:
  或者您也可以使用Sources选项卡将fanyi.min.js文件中的JS代码格式化输出,并使用Ctrl+F找到相应的"salt"位置,如下图所示:
  通过上述方法就找到了salt与sign(两个参数项是在一起的)JS代码,如下所示:var r = function(e) {     var t = n.md5(navigator.appVersion),     r = "" + (new Date).getTime(),     i = r + parseInt(10 * Math.random(), 10);     return {         ts: r,         bv: t,         salt: i,         sign: n.md5("fanyideskweb" + e + i + "Tbh5E8=q6U3EXe+&L[4c@")     } };1234567891011复制代码类型:[python]
  注意,找到上述代码是解决本节问题的关键,大家一定要要掌握方法。Python代码表示参数
  通过上述JS代码的简单分析可知:r变量等同于lts,salt变量等同于i,而sign是一个经过md5加密的字符串。接下来使用Python代码来表示上述参数,如下所示:#lts毫秒时间戳 str(int(time.time()*1000)) #salt, lts+从0-9的随机数 lts+str(random.randint(0,9)) #sign加密字符串 from hashlib import md5 #word为要翻译的单词等同于js代码中的"e" string = "fanyideskweb" + word + salt + "Tbh5E8=q6U3EXe+&L[4c@" s = md5() #md5的加密串必须为字节码 s.update(string.encode()) #16进制加密 sign = s.hexdigest()12345678910111213复制代码类型:[python]完整程序实现
  完整代码如下所示:#coding:utf8 import random import time from hashlib import md5 import requests class YoudaoSpider(object):     def __init__(self):         # url一定要写抓包时抓到的POST请求的提交地址,但是还需要去掉 url中的"_o",         # "_o"这是一种url反爬策略,做了页面跳转,若直接访问会返回{"errorCode":50}         self.url="http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"         self.headers={         "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36",         }     # 获取lts时间戳,salt加密盐,sign加密签名     def get_lts_salt_sign(self,word):         lts=str(int(time.time()*1000))         salt=lts+str(random.randint(0,9))         string = "fanyideskweb" + word + salt + "Tbh5E8=q6U3EXe+&L[4c@"         s=md5()         s.update(string.encode())         sign=s.hexdigest()         print(lts,salt,sign)         return lts,salt,sign     def attack_yd(self,word):         lts,salt,sign=self.get_lts_salt_sign(word)         #构建form表单数据         data={             "i": word,             "from": "AUTO",             "to": "AUTO",             "smartresult": "dict",             "client": "fanyideskweb",             "salt": salt,             "sign": sign,             "lts": lts,             "bv": "cda1e53e0c0eb8dd4002cefc117fa588",             "doctype": "json",             "version": "2.1",             "keyfrom": "fanyi.web",             "action": "FY_BY_REALTlME"         }         #使用 reqeusts.post()方法提交请求         res = requests.post(             url=self.url,             data=data,             headers=self.headers,         )         # res.json() 将json格式的字符串转为python数据类型         # 客户端与服务器数据交互以json字符串传递,因此需要将它转换为python数据类型         html=res.json()         print(html)         # 查看响应结果response  html:{"translateResult":[[{"tgt":"hello","src":"你好"}]],"errorCode":0,"type":"zh-CHS2en"}         result=html["translateResult"][0][0]["tgt"]         print("翻译结果:", result)     def run(self):         try:             word=input("请输入要翻译的单词:")             self.attack_yd(word)         except Exception as e:             print(e) if __name__ == "__main__":     spider=YoudaoSpider()     spider.run()123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263复制代码类型:[python]
  输出结果:请输入要翻译的单词:大家好,这里是开课吧广场Python爬虫教程  lts,salt,sign 输出结果: 1616472092090 16164720920902 fcc592626aee42e1067c5195cf4c4576  html 响应内容: {"type": "ZH_CN2EN", "errorCode": 0, "elapsedTime": 25, "translateResult": [[{"src": "大家好,这里是开课吧广场Python爬虫教程", "tgt": "Hello everyone, this is the beginning of the square Python crawler tutorial"}]]}  翻译结果: Hello everyone, this is the beginning of the square Python crawler tutorial
  开课吧广场-人才学习交流平台

持续强化顶层设计多部委支招新能源汽车发展来源中国经济网郭跃发改委指出,整车企业要突出重点布局,依托现有生产基地集聚发展,现有基地达到合理规模之前,不再新增产能布点。科技部表示,要把市场能够自主完成的交给市场,政府更多支持英伟达正构建高精度地图平台加速自动驾驶汽车部署DoNews3月26日消息(李文朋)3月26日消息,芯片制造商英伟达(Nvidia)公司正通过其新的NVIDIADRIVEMap平台构建厘米级精度的3D道路地图,计划到2024年为北理工发布2022强基计划招生简章,新增智能无人系统技术专业28日,北京理工大学发布2022年强基计划招生简章,招收数学与应用数学应用物理学化学工程力学智能无人系统技术五个专业的学生。值得注意的是,智能无人系统技术专业为首次面向强基计划招生重磅!多部委合力!新能源汽车整车迎政策大利好(名单)一汽车整合迎来重磅利好支持不再新增产能布点。整体此政策导向,利好现有新能源汽车企业,甚至利好壳概念汽车整合汽车。部分壳资源价格或因此而飙升,当然也利好现在优质新能源汽车企业。国家发科技讯华为回应俄公司受美制裁在测试鸿蒙系统今日看点华为回应俄公司受美制裁在测试鸿蒙系统暂无计划在海外推鸿蒙手机格力被曝未给员工足额缴纳公积金,目前正研究补缴方案安徽ETC将停止提供微信支付服务手续费上涨,与腾讯协商无果恒驰残障人士使用随申办无障碍功能时有哪些妙招?对于有视障听障认知障碍以及老年人等特殊群体的实际需求,随申办APP随申办微信支付宝小程序运用智能解析语音合成智能导盲大数据等新技术,提供包括语音读屏大字体大图标高对比度配色等无障碍潍柴动力新能源试验中心获得CNAS认可近日,潍柴动力新能源试验中心获得中国合格评定国家认可委员会(CNAS)颁发的实验室认可证书,成为行业首个同时通过氢燃料电池和固态氧化物燃料电池产品试验检测认可的实验室,具备氢燃料电手机价格2022年03月28日新消息手机价格手机价格2022年03月28日新消息千元手机的价格拥有一台笔记本英特尔N510012GB内存仅售1683千元手机的价格拥有一台笔记本电脑英特尔N510012GB内存仅售首发一座被遗忘10年的中国县城,正孵化出一批超级商业细胞在许多商业分析者的眼中,中国跨境电商行业是一幅由巨笔画就的抽象画。似乎,真正能在画布上画画的参与者寥寥无几。天才的商业嗅觉通外晓里的洞察力坚实的资本靠山似乎一个都不能少。但是,一个一汽红旗纯电轿车,售12万起,车长超奥迪A6L,续航里程略短一汽红旗品牌在燃油车市场,近年来呈现黑马般的表现,销量节节攀升。而在新能源市场,红旗品牌也投入了相关产品,比如有两款纯电动的SUV,以及一款纯电动的轿车。红旗投放的纯电动轿车名为E1TB固态硬盘579元秒五年质保稳定耐用产品名称英睿达美光SSD固态硬盘MX500SATA3。0接口1TB秒杀价格579元秒杀地址MX500系列SATA2。5英寸版提供250GB500GB1TB和2TB四种规格,它采用第
戈壁明珠新呼吸伊斐净宝新疆石河子体验中心盛大开业2019年11月8日,正值农历二十四节气中的立冬时节,相对于往年,从西伯利亚吹来的寒潮明显推迟了些,虽然气温已低至0度以下,位于准噶尔盆地南部的新疆石河子市在晴朗的阳光中却依然洋溢烟雾净化器,伊斐净宝高品质才是王道近几年中国的空气质量问题非常严重,随之而来的空气净化行业也被顺势推到了风口上。目前烟雾净化器的市场被全国各大厂家看好,市场需求意向庞大。然而,不同烟雾净化产品在市场上的价格多样,没双十一剁手忍不住?其实买它就够了所谓双十一是指每年的11月11日,由电子商务为代表的,在全中国范围内兴起的大型购物促销狂欢日。自从2009年10月1日和中秋节一起双节同过开始,每年的11月11号,以天猫京东苏宁易新造车的内卷危机内卷与革命的距离,或许并不遥远。文东篱去年开始,身边不断有朋友问我下场造车的玩家越来越多,感受如何?威马汽车董事长沈晖最近在微博上谈起了跨界造车的内卷化。他将内卷解读为一切对目标无Soul跟随清朗行动脚步全面狙击杀猪盘清朗行动,不仅为营造良好的互联网环境带来了新的动力,也为网民们带来了安全舒适的体验。而Soul也在此次清朗行动过程中,积极参与,全面打击杀猪盘行为,全心全意为用户营造安全社交环境。AI基础设施建设者格物钛助力开发者高效管理数据格物钛作为人工智能行业基础设施建设的领导者,致力于帮助AI企业和开发者高效利用非结构化数据加速人工智能应用创新和落地。格物钛提供的数据平台从数据这一人工智能根基着眼,加快AI应用开华为MateBook13s14s震撼来袭,为高效办公赋能随着生活节奏不断加速,压力也越来越大,很多小伙伴最苦恼的的就是无休止的加班,那么有效提高工作效率才是正解,利用起碎片时间来完成工作,这时一台便携且功能强大的笔记本电脑就会发挥作用,为荔枝保驾护航,德邦快递获畅流通贡献奖古来就有一骑红尘妃子笑,无人知是荔枝来的佳话,当时千里飞骑,只为将新鲜的荔枝送到贵妃面前,而如今,旧时王谢堂前燕,飞入寻常百姓家,老百姓们也能因为完善的快递运输服务吃上新鲜的荔枝。大V爆料OVHM对联发科最新天玑SoC实力给出好评,终端明年初上市微博知名爆料达人数码闲聊站近日发布了一则爆料,引起广泛热议。该爆料表示,联发科的天玑下一代旗舰芯片确定被OVMH等厂商采用,明年预估是双旗舰策略,天玑终端明年初上市,目前各厂商已验大V爆料联发科最新天玑旗舰SoC被OVHM验证,性能和功耗已获肯定继连续四个季度拿下手机处理器市场冠军之后,联发科的亮眼成绩业内有目共睹,随着下一代天玑旗舰SoC消息的露出,联发科近期再次成为数码圈关注焦点。近日,微博知名爆料达人数码闲聊站发布爆重量级嘉宾登场!华为MateBook13sMateBook14s超能打笔记本相对于台式电脑而言,具有小巧轻便办公高效等特点而备受人们的喜爱。华为作为PC市场新晋力量的代表品牌,自诞生以来发展迅速,尤其是MateBook系列笔记本产品,更是国内PC行业