前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >chrome获取jsonp回调数据

chrome获取jsonp回调数据

作者头像
biaoblog.cn 个人博客
发布2022-08-11 19:40:47
发布2022-08-11 19:40:47
45600
代码可运行
举报
运行总次数:0
代码可运行

老规矩 先说需求:

我们的需求是想要拿到某个网站里面的数据:

这段数据的URL来源是:

https://mdskip.taobao.com/core/initItemDetail.htm?isUseInventoryCenter=false&cartEnable=true&service3C=false&isApparel=false&isSecKill=false&tmallBuySupport=true&isAreaSell=false&tryBeforeBuy=false&offlineShop=false&itemId=522802245459&showShopProm=false&isPurchaseMallPage=false&itemGmtModified=1642442936000&isRegionLevel=false&household=false&sellerPreview=false&queryMemberRight=true&addressLevel=2&isForbidBuyItem=false&callback=setMdskip&timestamp=1642470796183&isg=eBPzGrIHg9nKQk3ZBOfwourza77OSIRAguPzaNbMiOCPO0f65jFOW6KySjTBC3GVh60HR3WK4ADbBeYBq_C-nxvOa6Fy_Ckmn&isg2=BJqaN138r3PdMyPn-l1dlvRA60C8yx6lcfVqt6QTRi34FzpRjFtutWAm5-OLx5Y9Prom=false&isPurchaseMallPage=false&itemGmtModified=1642442936000&isRegionLevel=false&household=false&sellerPreview=false&queryMemberRight=true&addressLevel=2&isForbidBuyItem=false&callback=setMdskip&timestamp=1642470796183&isg=eBPzGrIHg9nKQk3ZBOfwourza77OSIRAguPzaNbMiOCPO0f65jFOW6KySjTBC3GVh60HR3WK4ADbBeYBq_C-nxvOa6Fy_Ckmn&isg2=BJqaN138r3PdMyPn-l1dlvRA60C8yx6lcfVqt6QTRi34FzpRjFtutWAm5-OLx5Y9

正常来讲这是xhr的请求 但是它被network归类于js

我们仔细分析一下这段url 发现这是一个Jsonp的请求

关键词:

代码语言:javascript
代码运行次数:0
复制
callback=setMdskip

关于jsonp的简单说明参考:https://blog.51cto.com/u_8371379/1902418

然后知道了这是一个jsonp的请求,

我们的思路是:

在这个script嵌入之前 先声明callback方法

静静等待jsonp来调用我们就可以了,而且也不会影响到原来的逻辑:

类似于重写方法:参考之前的文章 函数盗用

具体代码:

页面首屏加载嵌入setMdskip方法:

代码语言:javascript
代码运行次数:0
复制
var s = document.createElement("script");
s.id = "kiwi_test_id";

s.innerHTML = "function setMdskip(data){console.log('data??????:::::',data)}";
document.body.appendChild(s);

完事就等待页面的中的这个script调用就可以了

其实很简单...

下课!

后续更新:

之后发现这些做会影响到之前的函数的原逻辑

所以我们需要把我们之前重写的方法 复制一份

基本的逻辑可以用es6的拓展运算符来解释

代码语言:javascript
代码运行次数:0
复制
{
 ...initFunc
customFunc
}

OK,解释完之后开始写代码:

代码语言:javascript
代码运行次数:0
复制
  let script = document.createElement("script");
    script.id = "tianmaoDisPriceCallBack";
    script.innerHTML = `
           // 复制方法 后面改写方法之后 再调用复制的方法,目的就是为了不影响原方法的逻辑
            let setMdskip_copy = setMdskip
            function setMdskip_crawler(data){
              console.log("天猫data:", data);
              setMdskip_copy(data)
            }
            setMdskip = setMdskip_crawler
        `;
      document.body.appendChild(script);

下课!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 老规矩 先说需求:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档