快递100获取快递信息(爬虫)

最近搞js逆向,发现个逆向简单的网站,搞一波

1.搞程序先装环境,requests_html库请求加解析于一体,居家旅行必备

pip install requests

2.安装完成环境,成功一半,接下来分析网站
(1)打开网网址:https://www.kuaidi100.com/?from=openv
(2)F12,一键超神

(3)准备一个快递单号(中通除外,不知为毛查不了)

(4)浏览器搜索快递信息里的某个关键字,运气好搜到了,点进去


(5)请求头,请求体信息全有,python写一波请求,又是运气好发现可以获取到
(6)可疑参数都怎么来的?首先请求头里发现只有Cookie的csrftoken值的变化是关键(等两天Cookie对比下就能知道),搜索一下值,运气再次爆表,搜到了

(7)接下来请求体参数,type快递名字,postid快递单号,temp像是时间戳名字,但不是,phone收件人电话(查顺丰快递需要这个)


搜到开搞,获取快递名函数有了
(8)找temp,值没有搜到,搜字段,回到获取到信息的网址,看看请求怎么来的,这几个地方挨个点进去看并搜索字段名(大佬有高招麻烦告诉我)

找到,原来是个随机数,too young

3.分析完毕,代码走起
(1)头部加载库

# @Time : 2021/3/22 16:40
# @Author : 张穆栩
# @File : kaudi100pro.py
# @Software: PyCharm
import re
import random
import requests_html

(2)面向对象,实例的参数

class Kuaidi(object):def __init__(self, number):# 转运信息urlself.url = 'https://www.kuaidi100.com/query'# token urlself.token_url = 'https://www.kuaidi100.com/'# 快递名urlself.name_url = 'https://www.kuaidi100.com/autonumber/autoComNum'# 快递名参数self.number_params = {'text': number}self.token_params = {'from': 'openv'}# 转运信息参数self.temp = str(random.random())self.params = {'type': self.getname(),'postid': number,'temp': self.temp,'phone': ''}csrftoken = self.gettoken()self.headers = {'Connection': 'keep-alive','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36','Referer': 'https://www.kuaidi100.com/?from=openv','Cookie': 'csrftoken=' + csrftoken + '; WWWID=WWWF4FCD42239B8DAC700F22E0571D3952D; Hm_lvt_22ea01af58ba2be0fec7c11b25e88e6c=1615603420,1615603495,1616232321,1616289581; Hm_lpvt_22ea01af58ba2be0fec7c11b25e88e6c=1616289592'}

(3)获取快递名称

# 获取快递名def getname(self):rous = requests_html.HTMLSession().post(self.name_url, params=self.number_params)name = rous.json()['auto'][0]['comCode']return name

(4)获取csrftoken

# 获取tokendef gettoken(self):rous = requests_html.HTMLSession().get(self.token_url, params=self.token_params)Set_Cookie = rous.headers['Set-Cookie']csrftoken = re.findall(', csrftoken=(.*?);', Set_Cookie)[0]return csrftoken

(5)获取所有转运信息

# 获取转运信息def getdata(self):# 转运信息参数Session = requests_html.HTMLSession()rous = Session.get(self.url, headers=self.headers, params=self.params)print(rous.text)datas = rous.json()['data']for data in datas:print(data)

(6)然后再启动它,搞定
完整代码

import re
import time
import random
import requests_htmlsession = requests_html.HTMLSession()class Kuaidi(object):def __init__(self, number, phone):# 转运信息urlself.url = 'https://www.kuaidi100.com/query'# 获取token url和Hm_lvtself.token_url = 'https://www.kuaidi100.com/'# 获取快递名urlself.name_url = 'https://www.kuaidi100.com/autonumber/autoComNum'# 快递名参数self.number_params = {'text': number}self.token_params = {'from': 'openv'}# 转运信息参数self.temp = str(random.random())self.params = {'type': self.getname(),'postid': number,'temp': self.temp,'phone': ''}csrftoken = self.gettoken()self.headers = {'Connection': 'keep-alive','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36','Referer': 'https://www.kuaidi100.com/?from=openv','Cookie': 'csrftoken=' + csrftoken[0] + '; Hm_lvt_' + csrftoken[1] + '=' + str(int(time.time())) + '; Hm_lpvt_' + csrftoken[1] + '=' + str(int(time.time()))}# 获取转运信息def getdata(self):# 转运信息参数rous = session.get(self.url, headers=self.headers, params=self.params)print(rous.text)datas = rous.json()['data']for data in datas:print(data)# 获取token 和 Hm_lvtdef gettoken(self):rous = session.get(self.token_url, params=self.token_params)Set_Cookie = rous.headers['Set-Cookie']csrftoken = re.findall(', csrftoken=(.*?);', Set_Cookie)[0]js_url = re.findall('https://cdn.kuaidi100.com/js/share/count.js(.*)">', rous.text)[0]url = 'https://cdn.kuaidi100.com/js/share/count.js' + js_urlrous = session.get(url)Hm_lvt = re.findall('https://hm.baidu.com/hm.js\?(.*)";', rous.text)[0]return [csrftoken, Hm_lvt]# 获取快递名def getname(self):rous = session.post(self.name_url, params=self.number_params)name = rous.json()['auto'][0]['comCode']return nameif __name__ == "__main__":# 运单号number = ''# 手机后四位phone = ''Kuaidi(number, phone).getdata()

快递100获取快递信息(爬虫)相关推荐

  1. 通过快递100获取快递单号,结合c-lodop热敏纸打印 – 通过菜鸟ISV/自研ERP使用菜鸟电子面单...

    https://www.1024cc.cn/index.php/2019/04/29/%E6%89%93%E5%8D%B0%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95/ 打 ...

  2. java 查询快递_调用快递100查询快递信息

    [java]代码库/** * 根据快递单号查询数据信息 * @param kuaidiNo * @return */ public static String getExpressInfo(Strin ...

  3. 【快递100】快递时效接口获取快递预计到达时间

    需求分析 目前公司上线了快递100的推送接口,现在需要做一个快递预计到达时间接口. 该接口主要是为了对签收和仓库人员进行月末考核,比如某个快递15号就签收,但是20号才入库,这属于失职,应当被处罚. ...

  4. 快递100和快递鸟接口限制

    2019独角兽企业重金招聘Python工程师标准>>> 快递100企业接口和免费接口的区别: 1.免费接口,每天有2000次的访问限制,相对稳定 2.企业接口没有访问限制,但是需要收 ...

  5. 快递100开放快递查询接口

    http://www.kuaidi100.com/query?type=快递运营商名&postid=快递单号 type支持的快递公司及参数说明:https://cdn.kuaidi100.co ...

  6. 模拟快递100请求 通过快递单号获取物流信息

    需求:只提供快递单号获取物流信息 思路:通过快递100获取 实现:快递100有2个接口,可以模拟请求操作. 1.通过快递单号获取快递公司代码. 2.通过快递公司代码和快递单号获取物流信息. 3.返回的 ...

  7. 快递100企业版接口(API)云打印、电子面单实现Java版

    当当当,重点来了,这是个搞好了可以让老板心甘情愿给你加薪至少10%的项目. 先看看痛点: 商城订单系统和发货系统是分离的,数据流无法打通.如果用户咨询,需要N多客服支持. 客服系统和订单系统也是分离的 ...

  8. 快递100接口对接总结

    免费版; (1)当天最多调用2000次; (2)仅支持在线查询: (3)仅支持200家,不支持国际. 企业版: (1)次数无限制: (2)支持主动推送.智能快递归属分析.实时查询: (3)支持快递公司 ...

  9. 物流一站式查询之快递100篇

    连载篇提前看 物流一站式查询之TrackingMore篇 物流一站式查询之顺丰接口篇 物流一站式查询之快递100 前言 前两篇我们已经讲了TrackingMore和顺丰接口的场景应用和对接示例,本篇, ...

最新文章

  1. webAPP优化方案总结
  2. 第10章 指针(二) 首地址----------指针
  3. 教学案例 计算机,宁夏计算机教学案例
  4. android studio创建文件,如何在Android Studio中创建File Templates
  5. 图灵奖得主Jeff Ullman:机器学习不是数据科学的全部!统计学也不是!
  6. Mac重复文件清理软件—Cisdem Duplicate Finder for mac
  7. ios8改变statusBar字体的显示颜色
  8. redis于spring整合之RedisTemplate
  9. 国内的Android SDK镜像
  10. applyTo、renderTo 区别
  11. 测试数据生成工具datafaker
  12. QT学习之QQ聊天案例
  13. 解决Proteus中的[SPICE] * stepping time与[SPICE] TRAN Timestep too small错误
  14. python实训报告怎么写_python实验报告
  15. 清除新版Google Chrome浏览器中表单控件(input,button...)默认的黑色边框
  16. 这可能是全网Java学习路线最完整,最详细的版本了,没有之一
  17. 反汇编入门试手 简单程序
  18. AD练习笔记 USB-TTL转换器
  19. Linux命令之vmstat命令
  20. 学习成绩 =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。(C语言版)

热门文章

  1. CSAPP 第二章家庭作业2.70
  2. scanner——04scaner进阶
  3. python代码审查规则_python代码检查
  4. CoBOT助力ITSS技术要求标准制定和落地
  5. 快递管理系统 v2.0
  6. ukulele弹奏模拟器v1.0(待完善)
  7. iReal Pro for Mac(优秀的音乐练习参考工具)
  8. 计算机专业,真的这么赚钱吗?
  9. Matplotlib之cmap趣味调色
  10. 高端数据中心交换机散热系统大比拼