网站推广内容,增光路网站建设,ipad 网站开发工具,关键词优化排名易下拉系统本文复刻此教程#xff1a;制作属于自己的翻译软件-很简单【Python】_哔哩哔哩_bilibili
一、明确需求#xff08;以搜狗翻译为例#xff09; #xff08;1#xff09;网址#xff1a;https://fanyi.sogou.com/text #xff08;2#xff09; 数据#xff1a;翻译内容…本文复刻此教程制作属于自己的翻译软件-很简单【Python】_哔哩哔哩_bilibili
一、明确需求以搜狗翻译为例 1网址https://fanyi.sogou.com/text 2 数据翻译内容
二、抓包分析——通过浏览器开发者工具分析对应的数据位置 1在搜狗翻译的官网打开开发者工具F12/右击选择“检查”——“network网络”
原始界面 2刷新网页 刷新网页进入网页在网页页面上已经有数据
刷新后界面 输入/点击搜索/查询刚开始进入网页没有数据当我们执行某些操作之后返回
输入后界面 下滑页面加载新的数据内容/点击翻页加载更多数据下滑网页/点击加载更多数据 3 通过关键字搜索找到对应的数据位置
数据包地址搜狗翻译 - 我的贴身智能翻译专家 二、通过代码逐步实现
1.发送请求——模拟浏览器对于url地址发送请求 模拟浏览器对于url地址发送请求 模拟浏览器方法——可以直接复制:开发者工具-网络-点击对应数据包-标头-请求标头 -cookie/ua/referer..复制之后在代码中字典形式 请求网址刚刚抓包分析找到链接地址直接复制粘贴即可 发送请求 1一般使用:第三方模块requests进行数据请求 2请求方法:开发者工具-网络-点击对应数据包-标头-常规 一般是有以下这两种POST/GET 3请求参数 GET请求:查询参数(显性) 直接在链接中显示可以不用额外构建 比如: POST请求:表单数据/请求载荷(隐性) 开发者工具-网络-点击对应数据包-载荷 2.获取数据——获取服务器返回响应数据 获取服务器返回响应数据 #获取响应的json数据 json_data response.json() 注意:查看返回数据和在响应中是否一致这里有三种情况 1.正常返回数据(没有问题)2.返回了数据但数据不是我们需要的这种情况说明被反爬了 3.没有返回数据(空白面板)。这种情况说明被反爬了。 上述第二第三种情况解决方法1.考虑请求头添加的参数伪装不够完善只是添加ua继续添加cookie参数..。2.请求参数/请求头是否存在加密参数内容 3.解析数据——提取我们需要的数据内容 4.保存数据——把提取数据保存为表格/数据库/json/文本
关于S值的逆向分析 对于不同翻译内容有两个关键点1text:输入需要被翻译的内容(文本内容)2s:不同文本内容值不同 为了解决上述情况经以下步骤逐步排查1.根据s值进行全局搜索查看是否另外数据包返回 2.根据s键进行搜索查看值是从什么地方生成根据s键名搜索返回内容过于多、根据堆栈 跟栈调试 XHR断点调试、搜索MD5加密关键代码MD5指的是长度32位由0-9 a-f组合起来的值
1.通过开发者工具搜索定位加密位置
这个关键字搜索出的数量比较少方便进一步查找。 一个个点击查看是否包含S 上述步骤可总结为
2.断点调试分析 1分析传入了什么参数调了什么方法进行加密处理 2输入翻译内容执行翻译程序程序会在我们断点位置暂停程序--看到相关传入返回值 教程中的步骤 最终代码
#导入数据请求模块(需要安装)
import requests
# 导入哈希模块
import hashlibdef Gets(key):string fautoen{key}109984457MD5 hashlib.md5()MD5.update(string.encode(utf-8))s MD5.hexdigest()return s
def translation(key):发送请求# 下面的参数都在网页的上headers {#cookie 用户信息常用于检测是否有登陆账号登录与否都有Cookie: *****,## User-Agent 用户代理表示浏览器基本身份信息User-Agent:***}#获取s的加密参数s Gets(key)# 请求网址url https://fanyi.sogou.com/api/transpc/text/result#请求参数data {from:auto,to:en,text:key,client:pc,fr:browser_pc,needQc:1,s:s,uuid:****-**********, #每台电脑的都是不一样的这里需要修改exchange:False}#发送请求获取数据response requests.post(urlurl, jsondata, headersheaders)# 获取响应的json数据json_data response.json()#字典取值:提取翻译结果result json_data[data][translate][dit]print(翻译结果:,result)return resultwhile True:# 用户输入翻译内容key input(请输入你要翻译的内容:)translation(key)
这里注意不要盲目把代码复制运行因为每台电脑的某些参数是不一样的需要一步步安装教程来修改