采用抓包的方式逆向获得谷歌翻译的API
创始人
2024-05-01 15:17:24
0

文章目录

  • 最开始的尝试
  • 2022.12.26
  • 谷歌翻译API相关信息
    • 发送网址
    • 提交的数据
  • 不过不出意外的失败了
  • 实验
    • 去掉参数
    • 去掉Headers
      • 代码
    • 对返回结果进行解析
      • 完整代码

最开始的尝试

  • 谷歌的翻译API老是发生变化,我们需要自己动手来找到谷歌的翻译API,这样才是最稳妥的解决方法

  • 首先,用谷歌浏览器打开谷歌的翻译界面,看一下它是怎么请求数据的

  • 右键检查,进入开发者工具,选择网络(network),如图所示

  • 点击clear清除,把之前所有的请求视觉上清空,方便我们后续查找真正的API请求

  • 谷歌翻译大约每秒会请求一次,我们很快就可以得到谷歌服务器返回给我们的翻译结果,经过排查,下面的这个batchexecute开头的请求就是我们需要的,

  • 我们点开对其进行进一步分析,可以看到这是一个post的请求

  • 从载荷中可以看到发送post请求时使用的参数,是一个表单数据

  • 从预览中可以看到翻译的结果,是一个JSON格式的数据

  • 2022.12.26

  • 上面的方法是适用的,只不过是现在这个接口没有以前好找了,我们使用谷歌搜索引擎上提供的谷歌翻译来找这个接口

  • 我们先在网页端测试一个翻译,可以看到这个结果反馈回来了

  • 这是一个post请求,自己下一个网址发送自己需要翻译的文本,服务器就会给自己反馈回来对应的结果

谷歌翻译API相关信息

发送网址

### https://www.google.com/async/translate?vet=12ahUKEwjp-9mwmZf8AhXT0GEKHQc7Cs8QqDh6BAgFECw..i&ei=6YepY6njDdOhhwOH9qj4DA&yv=3&cs=0
  • 这个网址虽然很长,但核心部分应该只是
### https://www.google.com/async/translate
  • 后面的参数都是没有太大用处的,不过我们这里先做保留,之后再做精简验证

提交的数据

### async=translate,sl:zh-TW,tl:zh-CN,st:1111,id:1672054875193,qc:true,ac:true,_id:tw-async-translate,_pms:s,_fmt:pc

  • 使用postman构造一个post的请求

不过不出意外的失败了

  • 返回的是一个404的网页,而不是自己想要的翻译结果,

  • 我猜测应该是没有添加cookie的关系,我们在参数里面添加一下cookie
  • 但没想到添加cookie之后依然失败

实验

去掉参数

  • 将所有的参数去掉之后,发现仍然可以正常得到结果

去掉Headers

  • 去掉Content-Length之后就无法返回结果了 #设置的headers参数不够

  • 结论:headers里面的参数应该尽可能多一点,最好把原请求中的所有参数都带过来

  • 写成对应的Python代码

代码

import requests url = "https://www.google.com.hk/async/translate" payload = "async=translate,sl:en,tl:zh-CN,st:1111,id:1672056488960,qc:true,ac:true,_id:tw-async-translate,_pms:s,_fmt:pc" 
headers = { 'sec-ch-ua': '"Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"', 'DNT': '1', 'sec-ch-ua-mobile': '?0', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36', 'sec-ch-ua-arch': '"x86"', 'sec-ch-ua-full-version': '"108.0.5359.125"', 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', 'sec-ch-ua-platform-version': '"10.0.0"', 'sec-ch-ua-full-version-list': '"Not?A_Brand";v="8.0.0.0", "Chromium";v="108.0.5359.125", "Google Chrome";v="108.0.5359.125"', 'sec-ch-ua-bitness': '"64"', 'sec-ch-ua-model': '', 'sec-ch-ua-wow64': '?0', 'sec-ch-ua-platform': '"Windows"', 'Accept': '*/*', 'X-Client-Data': 'CKW1yQEIhbbJAQiktskBCMS2yQEIqZ3KAQjb08oBCLD+ygEIlaHLAQjv8swBCN75zAEI5PrMAQjxgM0BCLKCzQEI7ILNAQjIhM0BCO+EzQEIt4XNAQ==', 'Sec-Fetch-Site': 'same-origin', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Dest': 'empty', 'host': 'www.google.com.hk', 'Cookie': '1P_JAR=2022-12-26-12; NID=511=eVLI1bG9nhyOZtqU14JBHm5Be00epdxfR4XmfQeehYyIkzgpXi6dbpNY75ZMVyS7aOjoM2oZ5WdoR8eNq6wi1-e_J0NeoyI0dtsHW-_8Ik4PGrqvuGHdcvVC03zTOEK2TY1FZL85Wimo_ZPIE3hGIrmGPSiel6-rRRW9lD30UPs' 
} response = requests.request("POST", url, headers=headers, data=payload) print(response.text)
  • 可以正常返回我们现在的结果,
  • 但这个结果还不是我们想要的,我们需要对其进行一并的解析

对返回结果进行解析

  • 其实也很好定位,就是找到 之间的文本即可
  • 提取完之后非常nice

完整代码

def Google_Translate(origin_string): import requests url = "https://www.google.com.hk/async/translate" payload = "async=translate,sl:en,tl:zh-CN,st:{},id:1672056488960,qc:true,ac:true,_id:tw-async-translate,_pms:s,_fmt:pc".format(origin_string) headers = { 'sec-ch-ua': '"Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"', 'DNT': '1', 'sec-ch-ua-mobile': '?0', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36', 'sec-ch-ua-arch': '"x86"', 'sec-ch-ua-full-version': '"108.0.5359.125"', 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', 'sec-ch-ua-platform-version': '"10.0.0"', 'sec-ch-ua-full-version-list': '"Not?A_Brand";v="8.0.0.0", "Chromium";v="108.0.5359.125", "Google Chrome";v="108.0.5359.125"', 'sec-ch-ua-bitness': '"64"', 'sec-ch-ua-model': '', 'sec-ch-ua-wow64': '?0', 'sec-ch-ua-platform': '"Windows"', 'Accept': '*/*', 'X-Client-Data': 'CKW1yQEIhbbJAQiktskBCMS2yQEIqZ3KAQjb08oBCLD+ygEIlaHLAQjv8swBCN75zAEI5PrMAQjxgM0BCLKCzQEI7ILNAQjIhM0BCO+EzQEIt4XNAQ==', 'Sec-Fetch-Site': 'same-origin', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Dest': 'empty', 'host': 'www.google.com.hk', 'Cookie': '1P_JAR=2022-12-26-12; NID=511=eVLI1bG9nhyOZtqU14JBHm5Be00epdxfR4XmfQeehYyIkzgpXi6dbpNY75ZMVyS7aOjoM2oZ5WdoR8eNq6wi1-e_J0NeoyI0dtsHW-_8Ik4PGrqvuGHdcvVC03zTOEK2TY1FZL85Wimo_ZPIE3hGIrmGPSiel6-rRRW9lD30UPs' } response = requests.request("POST", url, headers=headers, data=payload) def find_string_between_A_amd_B(string, string_A, string_B):  # 查找两段字符串之间的字符 import re regular = '{}(.*?){}'.format(string_A, string_B) result = re.findall(regular, string) return result result = find_string_between_A_amd_B(response.text, '', '') return result result = Google_Translate('222') 
print("result:", result)


return result

result = Google_Translate(‘222’)
print(“result:”, result)


[外链图片转存中...(img-nfuTyPwt-1672058973251)] 
[外链图片转存中...(img-ICHoHbvS-1672058973252)] # 

相关内容

热门资讯

狮子和猴子 狮子和猴子狮子和猴子正文:广西贵港市砺智特色教育培训学校(覃塘分校) 启蒙班 黄杰钒一天清晨,天刚蒙...
后浪的作文 关于后浪的作文  在日常学习、工作和生活中,大家都尝试过写作文吧,作文要求篇章结构完整,一定要避免无...
少先队入队誓词 少先队入队誓词  将来,我们将会接过老一辈们手中的班,肩负起建设我们美丽国家的重任。这个任务是艰巨的...
快乐成长作文 快乐成长作文5篇  无论在学习、工作或是生活中,说到作文,大家肯定都不陌生吧,作文是一种言语活动,具...
如水的女子 如水的女子  一道沁芳闸,承载了多少忧郁。  一本轻而薄的《影梅庵忆语》,又寄托了多少思念。  “女...
战争中的孩子 战争中的孩子战争中的孩子1  一次偶然的机会,我看到了这样一张令人揪心的旧照片。这是1937年8月2...
写自我想象的作文 写自我想象的作文  在平平淡淡的学习、工作、生活中,大家都经常接触到作文吧,作文是由文字组成,经过人...
去公园散步作文 去公园散步作文(通用20篇)  在现实生活或工作学习中,大家一定都接触过作文吧,借助作文人们可以反映...
我和我的闺蜜作文700字 我和我的闺蜜作文700字  在日常学习、工作和生活中,大家最不陌生的就是作文了吧,作文要求篇章结构完...
向着明亮那方作文 向着明亮那方作文(通用20篇)  无论是身处学校还是步入社会,大家都写过作文,肯定对各类作文都很熟悉...
人间天堂的作文 人间天堂的作文范文(精选14篇)  无论在学习、工作或是生活中,许多人都有过写作文的经历,对作文都不...
意外作文600字 意外作文600字(精选20篇)  在日常的学习、工作、生活中,大家都写过作文,肯定对各类作文都很熟悉...
我的理想高中作文 我的理想高中作文  在生活、工作和学习中,大家都经常看到作文的身影吧,作文可分为小学作文、中学作文、...
《皇帝的新装》续写作文 《皇帝的新装》续写作文150字(精选37篇)  在日复一日的学习、工作或生活中,许多人都写过作文吧,...
鲸的自述优秀作文 鲸的自述优秀作文(精选32篇)  无论是身处学校还是步入社会,大家都尝试过写作文吧,作文一定要做到主...
掌声作文 掌声作文掌声《作文:掌声》今天,老师让我们讲笑话,第一个上台的是林鸿滨,她精彩的表演引来了阵阵掌声。...
女排精神靠意志作文 女排精神靠意志作文(通用59篇)  在现实生活或工作学习中,大家最不陌生的就是作文了吧,借助作文人们...
美丽中国作文1000字 美丽中国作文1000字(精选39篇)  在日常学习、工作或生活中,大家都接触过作文吧,借助作文人们可...
小兴安岭作文 小兴安岭作文小兴安岭作文1  我的家乡在小兴安岭,那里有美丽而富饶的山群,有茂密又葱郁的森林。  夏...
军训感想作文 军训感想作文(精选29篇)  在平平淡淡的日常中,大家都经常看到作文的身影吧,作文是人们以书面形式表...