js加密一直是困扰数据抓取的难题,但总有办法,总结下经验一起学习
有道翻译接口初探
url地址:http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
通过分析请求头可以看到使用的post请求
请求是通过异步往服务器发送数据
主要有以下参数,一群看不懂的东西不用说肯定是加密信息
i: dog
from: AUTO
to: AUTO
smartresult: dict
client: fanyideskweb
salt: 16141702512290
sign: bbbabc9b638ff98c30e191f980ace7b2
lts: 1614170251229
bv: 4abf2733c66fbf953861095a23a839a8
doctype: json
version: 2.1
keyfrom: fanyi.web
action: FY_BY_REALTlME
找一个参数搜索一下是哪里加密的,这里我们用sign这个加密参数
虽然很多但是难不倒我们,找到加密位置
可以看到是用的md5加密方式,不懂可以百度一下
同时其它的加密参数也在这里
为了弄清楚加密的参数,通过js调试是最有效的方式
我们打断电调试结果如下,一目了然
ts:是系统时间戳
salt:时间戳+数字
bv:User-Agent的MD5加密
sign:一串字符加密
通过分析了解加密方式
就可以用代码构造自己加密方式
完整代码如下
# -*- coding: utf-8 -*-
import time
import requests
import random, json
from hashlib import md5
import pprint
class Youdao(object):
def __init__(self, keyword):
self.url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"
self.headers = {
'Accept'