Python搜狗翻译爬虫问题求助~
大佬好呀!下面是我对搜狗翻译爬虫的代码,但是不知道为什么得到的输出结果里面并没有'你好'的翻译,可以帮忙看一下什么问题吗~
代码:
import urllib.request
import urllib.parse
import json
url = 'https://fanyi.sogou.com/reventondc/translateV3'
head = {}
head['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
data = {}
data['from'] = 'auto'
data['to'] = 'en'
data['client'] = 'wap'
data['text'] = '你好'
data['uuid'] = '7a7594b9-771a-493d-951d-9db4426b7b12'
data['pid'] = 'sogou-dict-vr'
data['addSugg'] = 'on'
data = urllib.parse.urlencode(data).encode('utf-8')
response = urllib.request.urlopen(url, data)
html = response.read().decode('utf-8')
target = json.loads(html)
print(target)
得到的结果是:
{'data': {'detect': {'zly': 'zly', 'detect': 'zh-CHS', 'errorCode': '0', 'language': '中文', 'id': 'id', 'text': '你好'}, 'translate': {'qc_type': '1', 'zly': 'zly', 'errorCode': '20', 'index': 'content0', 'from': 'zh-CHS', 'source': 'sogou', 'text': '你好', 'to': 'en', 'id': 'id', 'dit': 'eb4q0xamc0lgokccklfg', 'orig_text': 'text', 'md5': ''}}, 'status': '0', 'info': 'success', 'node': '1', 'zly': 'zly'}
你确定你这个url是翻译的地址?先随便翻译一个,在浏览器上找到翻译出来的那个地址 url = 'https://fanyi.sogou.com/reventondc/suggV3'
换这个地址看看 本帖最后由 YunGuo 于 2020-12-11 16:09 编辑
你请求的接口是https://fanyi.sogou.com/reventondc/translateV3这个接口,但你传的参数确是https://fanyi.sogou.com/reventondc/suggV3这个接口的参数。参数不对;
如果你是要获取翻译结果,那么接口是这个接口没错。
https://fanyi.sogou.com/reventondc/translateV3这个接口有两个参数是加密参数,一个是s,一个是uuid,uuid可以不传。s参数必须传。
另外搜狗还做了cookie和referer反爬。需要添加cookie参数SNUID和referer。
s生成方式很简单,就是一个MD5加密的参数,加密内容是参数中的from值+to的值+翻译原文+109984457(固定值)
例如:
from值是auto,to值是en,翻译原文是你好,那么拼接起来就是"autoen你好109984457"
对"autoen你好109984457"进行MD5加密就可以得到 s参数。
text = 'autoen你好109984457'
ha = hashlib.md5()
ha.update(text.encode())
s = ha.hexdigest()
最后将https://fanyi.sogou.com/reventondc/translateV3这个接口需要携带的参数都带上,加上cookie中的SNUID和referer去请求,就可以得到正常翻译结果。 YunGuo 发表于 2020-12-11 15:10
你请求的接口是https://fanyi.sogou.com/reventondc/translateV3这个接口,但你传的参数确是https://fanyi. ...
怎么分析出来是MD5值的?加密内容是参数中的from值+to的值+翻译原文+109984457(固定值)?
求教一下 疾风怪盗 发表于 2020-12-11 22:30
怎么分析出来是MD5值的?加密内容是参数中的from值+to的值+翻译原文+109984457(固定值)?
求教一下
js断点调试
页:
[1]