python自制英汉词典不用爬虫_2020春节 python 爬虫有道词典 心得 (非delete_o 法)...

首先我想表达一下,我对奋战在前线的英雄们的感激。

我们一定会很快度过这次疫情的

注:B站我的排版好像有问题

这里提供一下我csdn的博客:https://blog.csdn.net/fuck_Kroenke/article/details/104360434

我春节实在是无聊极了,所以我就点开,小甲鱼的python课。

然后看到很多人说不行,要不就 delete_o 法 就是把request url 中的_o去掉就可以无视他的反爬虫机制

然后我就比较头铁,我头真的很铁,我一米7的身高,非要跟一米八八的争顶

昨天阿森纳4:0 我开心爆了。

萨卡牛逼,扎卡够猛。佩佩终于发挥他8000万的身价了,爱他。

奥巴梅杨牛皮

然后我超爱拉卡泽特,他做的球,狗都能进,属实牛逼!

在这里再死一次厄狗

这是我第一次发帖,我就很机车,废话就很多。

我实在不想委屈求全,所以出现了这个教程

不废话,下面干货

首先我找了一个2018的博客:

https://blog.csdn.net/li939891142/article/details/84592442

首先在这里感谢一下他

但现在他的代码已经失效

按照前辈的方法论,我们现在行不通了,就应该去找有道的js加密方法,于是我们找到

http://fanyi.youdao.com/

进去后按F12,找到elem块,找到js

如图

点进去后我们发现是一堆代码,根本不能看,我们就需要工具来处理一下js代码,我们百度一下js代码格式化

然后保存在word文档中,搜索salt

如图:

我们需要开始对比了:

首先这个sign一看就很不一样,第四个参数的字符串明显改动了。

然后salt的生成方式也变了

多了bv和ts

知道这些后,我们把这些参数伪造出来,骗服务器我们是正常人就行了

最后会附上代码

我这边提一下这个bv

var t = n.md5(navigator.appVersion),

这个t也就是bv了。

对了,这个对应关系从

return {

ts: r,

bv: t,

salt: i,

sign: n.md5("fanyideskweb" + e + i + "n%A-rKaT5fb[Gy?;N5@Tj")

}

这里看出。

我不懂怎么让python返回服务器的appversion,所以我直接用js(按f12)

然后如图:

我代码是直接把这一串字符给copy上去的

莫笑

接下来是我修改后变丑的代码

def getSalt():

"""

这是计算salt的公式  "" + ((new Date).getTime() + parseInt(10 * Math.random(), 10));

把它翻译成Python代码

:return:

"""

import time,random

# (new Date).getTime()生成的时间戳与time.time()的单位不一致,所以需要乘1000

r= '' + str(str(int(time.time()*1000)))

salt = r + str(random.randint(0,10))

return salt

def getMd5(v):

import hashlib

md5 = hashlib.md5()

# 需要一个bytes格式的参数

md5.update(v.encode("utf-8"))

sign = md5.hexdigest()

return sign

def getSign(key, salt):

sign = "fanyideskweb" + key + str(salt) + "n%A-rKaT5fb[Gy?;N5@Tj"

sign = getMd5(sign)

return sign

def getbv():

appVersion='5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36'

bv = getMd5(appVersion)

return bv

def getts():

import time, random

# (new Date).getTime()生成的时间戳与time.time()的单位不一致,所以需要乘1000

r = '' + str(str(int(time.time() * 1000)))

return r

from urllib import request,parse

def youdao(key):

url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"

salt = getSalt()

data = {

"i": key,

"from": "AUTO",

"to": "AUTO",

"smartresult": "dict",

"client": "fanyideskweb",

"salt": str(salt),

"sign": getSign(key, salt),

'ts' : getts(),

'bv' : getbv(),

"doctype": "json",

"version": "2.1",

"keyfrom": "fanyi.web",

"action": "FY_BY_CLICKBUTTION",

}

print(data)

# 参数data需要是bytes格式

data = parse.urlencode(data).encode('utf-8')

headers = {

"Accept": "application/json,text/javascript,*/*;q=0.01",

# "Accept-Encoding": "gzip,deflate",

"Accept-Language": "zh-CN,zh;q=0.9",

"Connection": "keep-alive",

# "Content-Length": len(data),

"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",

"Cookie": "OUTFOX_SEARCH_USER_ID=1076696971@10.168.8.63;JSESSIONID=aaaZ6s5m9DVmYf8g3QoDw;OUTFOX_SEARCH_USER_ID_NCOO=473292646.5080033;___rl__test__cookies=1543228484656",

"Host": "fanyi.youdao.com",

"Origin":"http://fanyi.youdao.com",

"Referer":"http://fanyi.youdao.com/",

"User-Agent": "Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/69.0.3497.100Safari/537.36OPR/56.0.3051.104X-Requested-With:XMLHttpRequest"

}

req = request.Request(url=url, data=data, headers=headers)

rsp = request.urlopen(req)

html = rsp.read().decode('utf-8')

# for values in html["translateResult"]:

#     print(values)

print(html)

if __name__ == '__main__':

youdao("girl")

#     参考:https://blog.csdn.net/li939891142/article/details/84592442博主 感谢他

我最后附上一下结果:

另外我想喝一瓶可乐,好心的你们,随便你们给我几毛钱,说不定我就可以凑一瓶可乐喝了。

————————————————

版权声明:本文为CSDN博主「fuck_Kroenke」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/fuck_Kroenke/article/details/104360434

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值