爬虫篇-小程序后台数据获取【附源码】

这篇具有很好参考价值的文章主要介绍了爬虫篇-小程序后台数据获取【附源码】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

  鉴于网上以及视频教材很多都是直接用cookie写到了headers中,这样验证是会过期的,我这里直接模拟浏览器请求。
  内部系统小程序后台爬虫应用,因此没有账号的可以学习思路,有账号的可以考虑实战爬虫。
  首先会分析整个小程序从一开始登陆页面请求分析到数据请求以及服务器相应内容做分析,确定参数形式,知道最后的获取数据。


一、分析小程序及后台

目标网址:http://travel.enn.cn/ssop/linzhi/admin/#/login
爬虫篇-小程序后台数据获取【附源码】
  从图上可知,本次需要先模拟登陆,并且需要验证码登陆,因此,我们按下F12,进入浏览器开发者工具,选择Network板块。
  然后重新刷新一下网页,这个时候我们会在开发者工具中得到后台的一些请求步骤,同时我们需要随便输入一个用户名和密码,以及随便一个验证码,我们需要查看登陆的时候前端浏览器会怎样发送数据到后台的,如图:
爬虫篇-小程序后台数据获取【附源码】
  到这里我们需要一条一条的分析,分析哪些是需要请求的链接,哪一条是验证码的链接。
经过分析:
  xxxx/login:是请求登陆的时候的网址
  xxxx/captcha.jpgxxxxx:这个是验证码的网址
到这里我们基本上就可以做模拟登陆了。


二、使用步骤

1.引入库

from re import T
import sys, urllib,datetime,urllib.request,urllib.parse,time,random,uuid,json
from http import cookiejar
from PIL import Image
from bs4 import BeautifulSoup

2.用代码构建一个模拟浏览器

cookie = cookiejar.CookieJar()
handler = urllib.request.HTTPCookieProcessor(cookie)
opener = urllib.request.build_opener(handler)

3.设置好需要请求的网址连接

url_base='http://travel.enn.cn/ssop/linzhi/admin/#/login'
login_url='http://travel.enn.cn//ssop/api/authority-v2/sys/login'
image_url='http://travel.enn.cn//ssop/api/authority-v2//captcha.jpg?uuid='

4.分析验证码

首先我们在刚刚上边的图片中点击带captcha.jpg?的链接,这个时候会得到一些信息,如图:
爬虫篇-小程序后台数据获取【附源码】
从这里我们可以看到,链接uuid=后面就是一个uuid,因此我们只需要通过uuid模块获取即可,然后这里的Response Headers,这个是爬虫的时候的请求头,我们需要对他进行重构,因此整体的获取验证码的请求代码如下:

headers={
    'Accept': 'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Connection': 'keep-alive',
    'Host': 'travel.enn.cn',
    'Referer': 'http://travel.enn.cn/ssop/linzhi/admin/',
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
}

验证码整体请求代码:

uuid = str(uuid.uuid1())
request = urllib.request.Request(image_url+uuid, headers=headers)
picture = opener.open(request).read()
local = open('image.jpg', 'wb') 
local.write(picture)
local.close()

这个时候本地就会有一张验证码的图片,名字为image.jpg
我们只需要打开图片人工读取验证码,输入到程序,代码如下:

image = Image.open('image.jpg')
image.show()
SecretCode = input('输入验证码:')

这里的变量SecretCode就是后面用到的验证码


5.模拟登陆

我们以同样的分析办法,分析/login的链接,如图:
爬虫篇-小程序后台数据获取【附源码】
这里代表在登陆的时候的请求头,我们直接代码模拟请求头,代码如下:

headers={
    'Accept': 'application/json, text/plain, */*',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Connection': 'keep-alive',
    'Content-Type': 'application/json; charset=UTF-8',
    'Host': 'travel.enn.cn',
    'Origin': 'http://travel.enn.cn',
    'Referer': 'http://travel.enn.cn/ssop/linzhi/admin/',
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
}

爬虫篇-小程序后台数据获取【附源码】
这里是登陆的时候我们前端打包数据包发给服务器,服务器会根据这个数据来验证用户名和密码以及验证码,这里参数意思为:
captcha:验证码
username:用户名
password:密码
t:时间戳
uuid:这里是上边获取验证码的时候设置的uuid,这个服务器会根据uuid和captcha进行绑定验证
因此我们需要代码构建这个数据包,代码如下:

post_data_str='{"t":' + str(int(time.time()*1000)) +',"username":"' + user + '","password":"' + passwd +'","uuid":"' + uuid + '","captcha":"' + SecretCode + '"}'

这里的user和password需要事先设置,因为账号隐私问题不公开。


爬虫篇-小程序后台数据获取【附源码】
这里是我们代码请求把上边的信息打包给服务器后返回的数据,这里直接是请求代码,代码如下:

data = post_data_str.encode(encoding='utf-8')
request = urllib.request.Request(login_url,data=data,headers=headers)
login_result = opener.open(request).read().decode('utf-8')
login_jsonresult = json.loads(login_result)
if login_jsonresult['code'] == '0':
    print('登陆失败:',login_jsonresult['message'])
else:
    print('登陆成功')
    token = login_jsonresult['token']

注意这里的token是后面所有的数据爬虫所需要的token,这里先做保留,请求成功后的截图如下:
爬虫篇-小程序后台数据获取【附源码】


总结

以上为爬虫模拟登陆的基本思路,后续还有js逆向爬虫案例。
源码:模拟登录源码文章来源地址https://www.toymoban.com/news/detail-493380.html

到了这里,关于爬虫篇-小程序后台数据获取【附源码】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信后台获取小程序码——极简办法

    一、首先需要获取你的小程序的APPID和secret,获取方式如下,去微信开放平台登陆你自己的小程序账号即可。微信公众平台   二、发送get请求带上小程序的APPID和secret获取accessToken 这里需要用到Hutool工具包,自行根据项目需要引jar包或者到maven坐标即可。 代码如下 json 数据可

    2024年02月11日
    浏览(29)
  • 微信小程序获取后台返回的二进制图片

    获取后台返回的二进制图片需要先使用wx.request方法发起网络请求获取图片数据,然后将返回的数据用wx.arrayBufferToBase64方法进行转换,最后将转换后的数据绑定到图片的src属性即可。 参考代码如下 其中,url为后台返回的图片地址,responseType为返回的数据类型为二进制数组。在

    2024年02月10日
    浏览(59)
  • 微信小程序——获取用户手机号(Java后台)

    最后有完整代码 1、获取code 2、利用code获取sessionkey 小程序端: Java后台: 获取小程序密钥:微信公众平台-开发管理-开发设置 3、获取iv和encryptedData并解密获取手机号 java后台: 如果报错40029则可能是appid不对 4、完整代码 wxml: wxss: js: Java后台

    2024年02月12日
    浏览(61)
  • excel爬虫相关学习2:vba 爬虫相关xmlhttp 前言:vba 爬虫相关xmlhttp的方法

    目录 前言:vba 爬虫相关xmlhttp的方法 1 什么是xmlhttp 1.1 定义 1.2 特点 1.3 创建xmlhttp对象的过程 1.4  XMLHTTP对象创建的几种方法: 2 XMLHTTP方法: 2.1 xmlhttp.open(Method, Url, Async, User,Password) 2.1.1 xmlhttp.open()方法 2.1.2 参数  2.1.3 xmlhttp.open(get, url) 2.1.4 xmlhttp.open(post, url) 2.1.5 xmlhttp.open(p

    2024年02月11日
    浏览(48)
  • 【Java】微信小程序二维码(后台,附获取accessToken)

    目录         调用方式         主要的请求参数         工具类         二维码转图片         获取accessToken         HTTPS 调用:         请求参数         代码         实现类 POST https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN 属性

    2024年02月04日
    浏览(63)
  • 爬虫-基于flask/大数据的人口分布系统+74853(免费领源码)可做计算机毕业设计JAVA、PHP、爬虫、APP、小程序、C#、C++、python、数据可视化、大数据、全套文案

    信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对人口分布系统等问题,对人口分布系统进行研究分析,然后开发设计出人口分布系

    2024年01月23日
    浏览(50)
  • Unity通过访问java后台获取数据库数据

    unity项目中,需要保存,加载大量的数据信息,对于unity直接编写访问数据库的代码毕竟麻烦。而java中的ruoyi框架可以直接根据数据库表生成对应的java后台,unity调用java后台的接口即可完成数据保存和加载。代码如下: 代码很简单,但是其中涉及到的内容需要和Java后台开发人

    2024年02月12日
    浏览(48)
  • SpringBoot微信小程序商城源码(前台+后台)

    🍓🍓 文末获取联系 🍓🍓 产品介绍   本产品用java技术开发的小程序前后台源码代码和视频开发教程。   产品主要包含一套Spring Boot小程序商城代码和一套小程序开发全栈实战项目视频课程。 小程序商城源代码介绍:   系统由:Spring Boot后端API,web管理后台 和 微信小

    2024年02月10日
    浏览(86)
  • uniapp+微信小程序获取openId,获取access_token,订阅消息模板,java后台发送消息

    1.前期准备 2.用户订阅消息 3.获取openId(uniapp) 4.获取access_token 5.发送消息 6.请求的代码Springboot(自己写有发送请求方法的可以不用看) 在微信公众号申请订阅消息 在公共模板这里选用模板, 模板种类跟小程序设置的类目有关,只有特殊的类目有长期订阅模板 类目可以在设

    2024年02月03日
    浏览(43)
  • Vue实现select下拉框二级联动数据后台获取

    一、二级联动在vue中实现selected的二级联动取其实很简单,可以使用select下拉框的表单改变事件。  @change在表单内容发生改变时出发方法。然后在下面的methods中声明方法,通过this.form.ks获取到当前下拉框的数据。  然后调用后两级访问数据库的方法,获取到联动的数据,添加

    2024年02月16日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包