资讯专栏INFORMATION COLUMN

如何能正常获取17track物流网站的物流信息?

mingzhong / 3276人阅读

摘要:需要的数据就是这个快递轨迹,看到上面的好像没什么问题,挺容易的,这还有什么比这爽的,赶紧使用请求一波。由于说过了,就不多说了,突破了继续刷新也会遇到一些未定义的,也是同样扣代码,就不多说了,这里说另一个。

原本昨天就要发文章的了,由于之前的pdd文章被投诉了,删除了,影响心情的同时也不敢乱发文章了,所以就暂时歇了一天,也改了另外一个网站,就是今天的物流网站。如果大家某天看不到我发文了,估计我也是被举报完了,到时想要看的可以去我的GitHub上看。

献上GitHub:https://github.com/SergioJune...

对你有用的话,希望能点个star,谢谢

今天网站:https://www.17track.net/zh-cn

这是个物流网站,就是查询物流的,今天要做的就是根据单号查询物流,废话不多说,直接肝。

1. 找到所需数据的 URL 请求

这里我们查询一个单号,也可以批量查询,参数都差不多,长度变了而已,所以演示就只查询一个单号。

打开了开发者工具你慢慢找,很容易就找到这个请求。

需要的数据就是这个快递轨迹,看到上面的 formdata 好像没什么问题,挺容易的,这还有什么比这爽的,赶紧使用 python 请求一波。

结果返回了这个,果然没有想象中的那么简单,估计又是在cookie上面做了反爬,那我们就加上cookie试试

果不其然,真的成功了,经过我的测试,发现需要的cookie 键是  ,那接下来就是看怎么生成的了。

2. 寻找生成位置

上面知道了是哪个 cookie 反爬的,最简单的寻找就是全局搜索这个参数来看看有没有线索。

果然有,而且文件名字和请求的路径名有几分相似,按经验来说八九不离十就是这个了,点击进去看看。

格式化就可以看到上图的代码,一眼看去,这代码很像我之前这篇请求网页时,怎么给我返回了一段 JavaScript 代码,都是前面一个大数组,然后在一个地方把这个数组的顺序,然后通过一个函数来将这个数组的元素来解密成正常的函数名。接着就是检测你有没有展开代码之类的,展开了就会内存爆破,具体的都可以看看我刚说的这篇文章。

有了上次的经验,我就直接在浏览器上格式化直接调试了,不把代码复制到本地运行了。

了解了这么多,就是开始调试了,由于我们需要找的 cookie确定是在这个文件内生成,但是还不知道在哪生成,所以需要调试下。

涉及到 cookie, 需要先把浏览器的cookie清除才行

点击 clear site data 即可清除,不放心的就点多几次。

接着就是在调试栏的右边的 watch 添加我们监听的变量,我们需要监听 cookie 的变化,所以点击 + 号添加 document.cookie 即可。

接着打断点的位置就在我们搜索到 cookie 值的位置上添加即可

接下来就是刷新网页,等待程序跳到断点的位置

这时看到 cookie 的值是空的,在 application 上看的 cookie 也是空的

接着就是按下断点执行下一行语句,不会的先自行百度,这个调试肯定得学会的,这里就不多说了,或者我过两天有时间写篇 chrome 调试供大家参考下。

现在就是漫长的调试寻找加密的时间了,经过我的查找,很快就可以看到这个了。

下面的那句明显就是设置 cookie 的,可以自己复制语句到 console 上运行一次

这样子就找到生成位置了,现在就是查看右边的调用栈,查看是在哪个地方开始执行的,看看他们之间的调用关系。

3. 把生成的参数代码扣出来

在上面的cookie 生成可以看到是一个数组,然后使用 join() 来连接起来的

我们可以观察这个数组在哪里生成和赋值的,也通过调用栈可以看到参数生成地方是在这里

我们可以先把这个语句所在的函数扣出来

发现里面的函数有些 document 对象,又因为这个是主函数,所以可以修剪下,把那些判断语句和捕捉异常的都给去掉,就是在原文件中看判断语句的真假运行的哪个语句就保留,而正常运行不会产生异常,所以把处理异常的也给去掉,就成了这个样子。

然后直接使用浏览器打开运行查看错误

然后对比原文件中的参数 ,发现这个是我们传的 formdata,所以为了测试先赋值一个即可。

接着是这个错误,这个未定义,也是在原文件中看他的定义处即可。可以这样看

点击上面箭头所指的地方即可到达定义。

直接到达这里,看到了他的定义,所以直接从这里扣出来到最后定义完之处即可,再次刷新,看到变成了另一个错误

也是在原文件中找定义即可

这是个解密函数,就是我上文说的将加密数组元素解密成正常的函数名,直接扣出来即可,同时我们还需要找个数组,就是第一行的。

再次刷新,浏览器卡了起来,甚至出现了崩溃

这就是所谓的内存爆破,这时因为里面有个函数检测到了你展开了代码,所以就来内存爆破,这个都是我在请求网页时,怎么给我返回了一段 JavaScript 代码这里得到经验的,如果你需要调试寻找的话,可以先在我们扣出来的代码随便写个错误,在文件代码出现,然后在第一行加上断点进行调试即可,剩下的就是自己一步一步调试找出内存爆破位置了。

由于说过了,就不多说了,突破了继续刷新也会遇到一些未定义的,也是同样扣代码,就不多说了,这里说另一个。

这里明明已经是定义了,却显示未定义,打了断点一看,原来是函数名字都是乱码的

这是因为我们在第一行定义的数组是乱序的,需要还原下,这个需要自己一步一步调试查看原文的,我这里就直接说了

里面可以打上断点查看即可。

剩下的还是重复原来的步骤,查看错误,扣代码即可,由于篇幅这里就不多说了,有问题可以去公众号「日常学python」菜单栏加我微信拉进交流群交流。

4. 用 Python 运行获取结果

这里还是使用 PyExecjs 库来执行 JS 获取cookie值,如果还原成python 语言成本太大了,不适合。

代码也没有什么的,具体的可以去 github:https://github.com/SergioJune... 上面看

最后

这篇文章昨天就想发了,无耐太累,就一直拖到今天了,有点对不起读者,还有 pdd 的已经被删除了,想看的可以去 github 上看。

最后,原创不易,希望大家多点赞多转发分享给你的好友,点赞转发越多,我就写得越多!!!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43519.html

相关文章

  • 分享一个物流轨迹追踪PHP库slince/shipment-tracking

    摘要:做过跨境电商项目的同学都知道,除了订单,支付和购物车外还有一个很头痛的模块物流轨迹追踪。 做过跨境电商项目的同学都知道,除了订单,支付和购物车外还有一个很头痛的模块-物流轨迹追踪。 通常来说企业为了节省成本采用的物流渠道都是五花八门的,DHl、EMS、Epacket、USPS...听起来就让人头疼;谁让咱们是做技术的呢,为了解决各家接口数据格式不一致的问题,特地花了一段时间做了一个co...

    Turbo 评论0 收藏0
  • 云计算全面杀入企业级市场2019,谁有可弯道超车?

    摘要:由此看出,云计算市场的竞争格局还未完全确定。尤其在现阶段,企业级业务进入需求爆发期,能快速抓住企业上云核心需求的大型云计算厂商更有可能快速抢占市场份额,实现弯道超车。近年来,在企业数字化转型的热潮下,我国云计算发展正式迎来需求爆发期。随着云计算的应用普及,越来越多的企业开始拥抱云计算服务,云计算或将于2019年全面杀入企业级市场。中国云计算市场规模和集中度增加,但市场竞争格局仍未确定据亿欧智...

    Scholer 评论0 收藏0
  • 基于云计算物流在快递行业中应用

    摘要:基本概念云物流概述云物流是基于云计算应用模式的物流。运输条件的改善基于云计算的云物流通过物流平台的构建在资源池内实现信息的共享,同时能高效地找到匹配的订单,进而根据订单来配送。0 引言国家标准《物流术语》指出:物流是物品的实体流动过程,物品从供应地到接受地的过程中包含着众多的环节,如对物品进行包装、流通加工、配送,对物流信息进行处理,进而对实体进行储存、搬运、运输、装卸等,直至送到消费者手中...

    PumpkinDylan 评论0 收藏0
  • test

    摘要:能否保证原箱发货为防止运输途中的瘪罐,在仓库打包的过程中,会拆掉原箱对奶粉罐挨个进行减震包装。稍后会有客服人员联系客户协商处理破损产品。 小红马常见问题 平台介绍 什么是小红马? 小红马是一个拥有优质的供应链、IT、资金等核心资源,基于对中国母婴行业的深刻洞察,全新构建的母婴用品全品类一站式采购平台。 小红马对门店具备哪些优势? *小红马平台货源来自厂家直供与国代商渠道,不同于其他平台...

    Snailclimb 评论0 收藏0

发表评论

0条评论

mingzhong

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<