入境游旅游网站建设商家入驻型网站建设

pingmian/2026/1/20 19:50:54/文章来源:
入境游旅游网站建设,商家入驻型网站建设,电子商城网站建站客,怎么看网站pv1.登录页面#xff0c;显示二维码 当我们打开网页微信时#xff0c;会看到一个用于扫码登录的二维码#xff0c;所以我们要模拟该页面给我们的页面也弄一个二维码 通过查看网页代码我们发现#xff0c;这个二维码的标签为 这个src属性的最后一段每次访问都是不同的#xf…1.登录页面显示二维码 当我们打开网页微信时会看到一个用于扫码登录的二维码所以我们要模拟该页面给我们的页面也弄一个二维码 通过查看网页代码我们发现这个二维码的标签为 这个src属性的最后一段每次访问都是不同的我们发现每次访问该页面时会向后端发送请求获得这个随机字符串 这个请求的结果为 所以该请求获取的结果就是我们想要的随机字符串那么我们也可以向这个url发送请求获取随机字符串并利用随机字符串拼接地址获取二维码图片 from flask import Flask, request, render_template, session import time import requests import re app Flask(__name__) app.debug True app.secret_key ksjgsapp.route(/login, methods[GET, POST]) def login():if request.method GET:ctime str(int(time.time() * 1000)) # url最后的内容其实是时间戳经过处理的结果qcode_url https://login.wx.qq.com/jslogin?appidwx782c26e4c19acffbredirect_urihttps%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpagefunnewlangzh_CN_{}.format(ctime)ret requests.get(qcode_url)qcode re.findall(uuid (.*);, ret.text)[0]session[qcode] qcodereturn render_template(login.html, qcodeqcode)else:passif __name__ __main__:app.run() login页面 !DOCTYPE html html langzh-CN headmeta charsetUTF-8meta http-equivx-ua-compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1title微信登录/title /head body h1微信登录/h1 img srchttps://login.weixin.qq.com/qrcode/{{qcode}} alt script src/static/jquery-3.2.1.min.js/script/body /html 这样我们访问时就能看到二维码了 扫码后二维码变成用户头像 看到二维码后如果我们进行了扫码那么页面上的二维码会立刻变成用户的头像但是此时我们并没有看到页面向后端发送请求为什么后端能让前端的页面发生变化呢我们通过浏览器的network选项发现其实当页面加载完成后浏览器会不停的向后端的一个url发送 请求这个请求发送到后端后就被夯住了这个时间在25秒左右如果没有人扫码那么请求会结束浏览器继续发送如果有人扫码了那么后端会立刻向浏览器返回相关信息浏览器就可以将页面的二维码改变为用户的头像了这种持续发送请求的方式称为长轮询 我们在页面加载完成后也模拟这个长轮询 login页面 !DOCTYPE html html langzh-CN headmeta charsetUTF-8meta http-equivx-ua-compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1title微信登录/title /head body h1微信登录/h1 img srchttps://login.weixin.qq.com/qrcode/{{qcode}} alt script src/static/jquery-3.2.1.min.js/script script$(function () {check_login()});function check_login() {$.ajax({url: /check_login,type: GET,dataType: JSON,success:function (arg) {if (arg.code 201){$(img).attr(src, arg.src);check_login()} else if(arg.code 200){location.href /index}else{check_login()}}})} /script /body /html 前端页面加载完成后就开始向后端发送ajax长轮询根据后端返回的内容判断是否继续发送轮询还是进行跳转如果有人扫码了那么就将扫码人的头像替换页面上的二维码并继续轮询直到扫码人点击确认则进行跳转没人扫码则一直进行长轮询 后端 from flask import Flask, request, render_template, session, jsonify import time import requests import re from bs4 import BeautifulSoupapp Flask(__name__) app.debug True app.secret_key ksjgsdef xml_parser(text):errorret0/retmessage/messageskeycrypt_ef73b06b_bd2d7a9918de33c9fc59b3b518a5314f/skeywxsid5gfJFQAjurnuD3t/wxsidwxuin2507632864/wxuinpass_ticketn3hBG1Aky%2FORERALnTUhkjRrAaho%2BX6vu8%2B9Z3gPrsmnWmKqs5a%2BFe%2FehjeweCeP/pass_ticketisgrayscale1/isgrayscale/error dic {}soup BeautifulSoup(text, html.parser)div soup.find(nameerror)for item in div.find_all(recursiveFalse):dic[item.name] item.textreturn dicapp.route(/login, methods[GET, POST]) def login():if request.method GET:ctime str(int(time.time() * 1000)) # url最后的内容其实是时间戳经过处理的结果qcode_url https://login.wx.qq.com/jslogin?appidwx782c26e4c19acffbredirect_urihttps%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpagefunnewlangzh_CN_{}.format(ctime)ret requests.get(qcode_url)qcode re.findall(uuid (.*);, ret.text)[0]session[qcode] qcodereturn render_template(login.html, qcodeqcode)else:passapp.route(/check_login) def check_login():ctime str(int(time.time() * 1000))qcode session.get(qcode)check_url https://login.wx.qq.com/cgi-bin/mmwebwx-bin/login?loginicontrueuuid{}tip0r-1052355888_{}.format(qcode, ctime)ret requests.get(check_url)response {code: 408} # 如果没人扫码则返回的code为408if code201 in ret.text: # 如果有人扫码了则会返回201并且会返回用户的头像的srcresponse[code] 201response[src] re.findall(userAvatar (.*);, ret.text)[0]elif code200 in ret.text: # 有人扫码后前端页面仍然会发送长轮询直到扫码的人点击确认登录会返回200redirect_uri re.findall(redirect_uri(.*);, ret.text)[0] # 此时会返回跳转地址# 向redirect_uri地址发送请求获取凭证相关信息redirect_uri redirect_uri funnewversionv2 # 这个跳转地址并不全我们需要自己补充ticket_ret requests.get(redirect_uri) # 向跳转地址发送请求获取登录凭证ticket_dict xml_parser(ticket_ret.text) # 这个登录凭证是一个xml的格式我们通过一个函数将他转换成字典session[ticket_dict] ticket_dict # 将登录凭证存入session方便后面使用response[code] 200return jsonify(response)app.route(/index) def index():return 登录成功if __name__ __main__:app.run() 获取用户信息 当确认登录后会返回跳转地址浏览器会向这个跳转地址发送get请求获取一个凭证(类似于cookiexml格式)获取这个凭证后浏览器会接着发送一个post请求请求内容就是凭证内的相关内容这个post请求就能获取用户的信息最近联系人等信息 我们这里通过index函数来发送这个post请求 app.route(/index) def index():用户数据的初始化https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r-1039465096langzh_CNpass_ticketq9TOX4RI4VmNiHXW9dUUl1oMzoQK2X2f3H3kn0VYm5YGNwUMO2THYMznv8DSXqp0:return:ticket_dict session.get(ticket_dict)init_url https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r-1039465096langzh_CNpass_ticket{0}.format(ticket_dict.get(pass_ticket))data_dict {BaseRequest:{DeviceID:e750865687999321,Sid:ticket_dict.get(wxsid),Uin:ticket_dict.get(wxuin),Skey:ticket_dict.get(skey),}}init_ret requests.post(urlinit_url,jsondata_dict)init_ret.encoding utf-8user_dict init_ret.json()print(user_dict)# for user in user_dict[ContactList]:# print(user.get(NickName))return render_template(index.html,user_dictuser_dict) 首先从session中获取我们处理后得到的凭证字典然后发送post请求这里发送的数据为json格式post请求的返回内容就是用户相关数据的字典我们可以通过ret.json()直接获取这个字典相当于经过json.loads然后将相关的内容渲染到页面上 index页面 !DOCTYPE html html langzh-cn headmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1titleTitle/title /head bodyh1欢迎登录{{user_dict.User.NickName}}/h1h3最近联系人/h3ul{% for user in user_dict.ContactList%}li{{user.NickName}}/li{% endfor %}/ul /body /html     转载于:https://www.cnblogs.com/weiwu1578/articles/9010561.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/87415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

青海网站建设推广ui培训学费一般多少

欢迎来到我的:世界 希望作者的文章对你有所帮助,有不足的地方还请指正,大家一起学习交流 ! 目录 前言队列的实现层序遍历详解强化练习1.判断是不是完全二叉树求二叉树的最大深度 总结 前言 国庆到了,也要内卷一下,感…

网站建设的步骤过程如何做医美机构网站观察分析

linux下生成https的crt和key证书 步骤如下: x509证书一般会用到三类文,key,csr,crt Key 是私用密钥openssl格,通常是rsa算法。 Csr 是证书请求文件,用于申请证书。在制作csr文件的时,必须使…

做网站开发的有外快嘛企业网站建设好的例子

PineApple_Ninja.js 1.本章内容 2.理解函数的重要性 3.定义函数的方式 4.参数赋值 JavaScript中最关键的函数是:第一类对象(first-class objects) 函数与对象共同存在,函数也可以被视为其他任意类型的JS对象。 函数和普通数据类…

17网站一起做网店普宁池尾网站开发符合seo结构

第一创业和聚宽停止合作!还有什么量化平台可选? 先了解背景: 从2023年9月25日起,一创聚宽的量化交易平台暂停开通交易权限,到2023年12月29日,一创聚宽量化交易平台将停止提供所有服务。这一消息对于之前使…

医院双语网站建设的意义江苏10大网站建设公司

ProxySQL 是一个高性能、高可用的 MySQL 代理软件,旨在提升 MySQL 数据库的可扩展性和性能。它可以在应用程序和 MySQL 服务器之间充当中间层,提供强大的路由、负载均衡和查询优化功能。 ProxySQL 的主要功能: 查询路由: ProxySQ…

长沙网站建设服务wordpress手机 不适应

defer 和 async 都是用于控制 HTML 中 <script> 标签加载和执行 JavaScript 的属性&#xff0c;它们的作用有所不同&#xff1a; defer&#xff1a; 当浏览器遇到带有 defer 属性的 <script> 标签时&#xff0c;它会继续解析 HTML 页面&#xff0c;同时并行下载 de…

中山网站建设找阿 n 2wordpress下载站

压敏电阻 文章目录 压敏电阻1、概述2、交流波形瞬变3、抗静电能力4、特性曲线5、压敏电阻电容值6、金属氧化物压敏电阻7、压敏电阻应用8、总结 压敏电阻是一种无源两端固态半导体器件&#xff0c;用于为电气和电子电路提供保护。 1、概述 与提供过电流保护的保险丝或断路器不同…

为什么公司的网站打不开网页设计和网站开发的区别

Node.js是一个基于Chrome V8引擎的JavaScript运行时环境&#xff0c;它使得我们可以使用JavaScript构建高性能的后端应用程序。无论你是初学者还是有经验的开发者&#xff0c;了解如何正确安装和配置Node.js都是非常重要的。本文将介绍如何安装和配置Node.js&#xff0c;以及一…

网站怎么制作小程序网站推广开户

在工具栏Chrome图标上点击右键&#xff0c;可以“打开新窗口”或“打开新的隐身窗口”很方便&#xff0c;但是在其他电脑上尝试该操作时&#xff0c;发现有些情况下还会显示“常去网站”和“最后关闭网站”。如果关闭之&#xff1f; 经过摸索&#xff0c;发现方法如下&#xff…

网络 网站描述网站建设的基本流程图

一、set查找和统计 函数原型&#xff1a; find(key); //查找key是否存在,若存在&#xff0c;返回该键的元素的迭代器&#xff1b;若不存在&#xff0c;返回 set.end(); count(key); //统计key的元素个数代码示例&#xff1a; #include<iostream> using namespace std;…

成都大丰网站建设例表网深圳市住建局官网查询

目录 题目需求 程序编写 定义学生结构体: 选择菜单: 文件读入结构体变量: 结构体变量写入文件: 输入检查: 输入记录: 打印记录: 修改记录: 删除记录: 查找信息: 最终代码: 调试: 软件准备: 测试数据: 直接复制测试数据版本: 输入,打印输出…

Asp网站开发入门优购物官方网站购物

随着区块链技术的日益成熟&#xff0c;去中心化应用&#xff08;DApp&#xff09;逐渐成为数字世界的新焦点。在这个充满无限可能的全新领域&#xff0c;DApp开发为创新者们提供了开启数字时代新篇章的钥匙。 一、DApp&#xff1a;区块链创新成果 DApp是建立在区块链技术基础之…

陕西网站开发联系方式wordpress模板

Ubuntu 20.04是继Ubuntu 18.04 LTS之后的下一个长期支持(LTS)版本&#xff0c;从Ubuntu 20.04开始系统不再预装python2。 如果我们有一些老旧的代码需要运行&#xff0c;可以在新版的Ubuntu系统上自行安装python2。 安装命令&#xff1a; sudo apt install python2查看pytho…

大网站整站备份农产品网站建设 孙修东

目录 一、实验 1.环境 2.OpenEuler 部署 ES (EalasticSearch) 3.OpenEuler 部署 Kibana 4.部署 Elasticvue插件 5.使用cpolar内网穿透 6.使用Elasticvue 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 系统架构版本IP备注LinuxopenEuler22.03 LTS SP2 1…

网站建设考虑如何做网站解析

正题 大意 有n把剑&#xff0c;每一把剑有一个值aiai&#xff0c;然后两把剑的契合值是ai and ajaiandaj&#xff0c;求最大契合值。 解题思路 先把每个a转换成二进制 我们可以先从高位到低位。如果一个位数有超过一把剑那么这两个剑合在一起的值一定比任何这个位位为0的合在…

公司网站建设提纲接网站建设外包的工作

在Python中库没有官方说法。 是其他地方沿用过来的。 姑且认为他是一个包或多个包的集合。 包里有子包和模块。 模块以.py格式存储。 下图是一个例子&#xff0c;对于Robot包&#xff1a; import math a math.sqrt(9) 等价于 from math import * a sqrt(9) from math im…

网站后台怎么上传文章手机商场网站制作

在当今的商业环境中&#xff0c;流量已经成为了每个企业争夺的宝贵资源&#xff0c;这也导致了获客成本的不断上升。为了解决这个问题&#xff0c;越来越多的企业开始转向私域流量的运营&#xff0c;通过私域来吸引和维护客户。以电商为例&#xff0c;商家通过客服引导用户添加…

网站开发用什么系统比较好网络营销公司模板

单一职责原则(SRP),就一个类而言&#xff0c;应该仅有一个引起它 变化的原因。 一个c语言的贪吃蛇代码 如何使用单一职责原则封装成c面向对象呢 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h> #include <wi…

用什么来网站开发好做外贸哪个网站要办信用卡的

一、概述1.Run loops是线程的基础架构部分。一个run loop就是一个事件处理循环&#xff0c;用来不停的调配工作以及处理输入事件。使用run loop的目的是使你的线程在有工作的时候工作&#xff0c;没有的时候休眠。2.Run loop的管理并不完全是自动的。你仍必须设计你的线程代码以…

企业网站建设 租用服务器wordpress删除全部评论

独立站作为由商家自己运营和管理&#xff0c;拥有完整的商品展示、订单处理等功能。相比于第三方电商平台&#xff0c;独立站的优势在于可以更好地控制产品质量、价格和服务&#xff0c;同时也有利于建立品牌的形象和忠诚度。 因此&#xff0c;对于一些希望形成自己的用户群体…