2021-12-21

2021-12-21,第1张

青龙openAPI非官方文档

前言:之前预告发一个小工具,本来后端部分已经写完,在本地测试成功,但是搬到服务器就出现错误,再加上沉迷游戏,先鸽了。授人以鱼不如授人以渔,发个openapi使用说明,应该有人需要,其实看青龙的源码也能看明白,这里以环境变量的api为例,抛砖引玉了。官方源码:>

接 上篇

RequestRateLimiter GatewayFilter Factory使用 RateLimiter 来决定当前请求是否允许通过,如果不允许,则默认返回状态码 >

分布式Session一致性?

说白了就是服务器集群Session共享的问题

Session的作用?

Session 是客户端与服务器通讯会话跟踪技术,服务器与客户端保持整个通讯的会话基本信息。

客户端在第一次访问服务端的时候,服务端会响应一个sessionId并且将它存入到本地cookie中,在之后的访问会将cookie中的sessionId放入到请求头中去访问服务器,如果通过这个sessionid没有找到对应的数据那么服务器会创建一个新的sessionid并且响应给客户端。

分布式Session存在的问题?

假设第一次访问服务A生成一个sessionid并且存入cookie中,第二次却访问服务B客户端会在cookie中读取sessionid加入到请求头中,如果在服务B通过sessionid没有找到对应的数据那么它创建一个新的并且将sessionid返回给客户端,这样并不能共享我们的Session无法达到我们想要的目的。

解决方案:

目前项目中存在的问题

启动两个项目端口号分别为8080,8081。

创建测试类:

yml配置:

修改映射文件

在这里我们开启nginx集群,修改配置:

我们直接通过轮询机制来访问首先向Session中存入一个姓名,>

最近遇到这样一个需求:当用户输入一个词语时,返回这个词语的解释

我的第一个想法是做一个数据库,把常用的词语和词语的解释放到数据库里面,当用户查询时直接读取数据库结果

但是自己又没有心思做这样一个数据库,于是就想到了百度百科这么一个现成的 “数据库”

下面我们就通过 urllib 和 xpath 来获取百度百科的内容

1、爬取百度百科

百度百科是一个静态网页,爬取起来很简单,而且请求参数可以直接放在 URL 里面,例如:

可以说是十分方便,也不多说,直接放代码,有不明白的地方可以看看注释:

如果对于 urllib 的使用不太清楚,可以参考 爬虫系列(三) urllib的基本使用

如果对于 xpath 的使用不太清楚,可以参考 爬虫系列(九) xpath的基本使用

import urllibrequest

import urllibparse

from lxml import etree

def query(content):

# 请求地址

url = '>

主页预览

文章内容直接get主页就可以拿到,页面内容太长,这里就不贴具体内容了,chrome自行查看。URL结构也非常简单,只需要修改后面的文章id就可以。

============ 2019年8月10日更新

一点资讯的搜索接口有调整,新的搜索接口:

Post 请求

请求url:

参数中的display是搜索的关键词

请求头:

============ 旧版搜索(已经不能使用)

搜索界面预览 (请使用chrome的手机模拟)

搜索接口

这个接口返回的是输入框输入之后提示出来的信息,这个其实要比点击搜索之后给出的要好,因为这个里面给出的信息很多。大概结构是这样:

这里备用一下完整的参数请求,实际上大胆去掉后面两个参数,并不影响我们获取内容。

在搜索界面会提示当前的热搜关键词, 接口页面:

热搜接口

基础url

请求参数

我们不断的下拉,查看异步请求,filter设置为 channel

然后对比请求发现参数的规律如下

其他参数都是固定值。所以我们需要追踪_spt这个参数。全局搜索一下_spt,只有一个文件中发现了这个字符串

定位到这个函数中function(e, t, i), 我们给函数打上一堆断点,然后F5刷新页面,稍等一会,页面会加载到断点的位置暂停,我们按F8可以继续执行。然后不断的按下F8,我们可以看到各个变量的值,

执行到59行时:

这时候拿到channel_id,保存在变量t中,这里拿到的t是best,当然,不同的广场标签对应channel不一样。这个id明文传输在参数中。

继续F8,我们开始进入到第一个循环中,变量o的初始值为sptoken,循环会把arguments中除了第一个字符串全部追加的o的后面,arguments中有四个字符串

看下这几个字符串都是什么,

现在就差后面两个参数,我们不断上划加载数据然后重复F8的过程看看数据的变化:

可以看到后面两个参数就是起止数目,参数中的cstart和cend。于是到此为止,可以说基本破解成功了。我们写个python函数:

对比一下网站的参数:

搞定!

这里有个地方很有意思啊, 该网站对web的访问控制是通过明文参数控制的

个人首页

然后,链接地址就出现在了对应的标签中。很容易找到。

场景:前后端分离,页面和后端项目部署在不同服务器,出现请求跨域问题。

原因:CORS:跨来源资源共享(CORS)是一份浏览器技术的规范,提供了 Web 服务从不同网域传来沙盒脚本的方法,以避开浏览器的同源策略,是 JSONP 模式的现代版。与 JSONP 不同,CORS 除了 GET 要求方法以外也支持其他的 >

以上就是关于2021-12-21全部的内容,包括:2021-12-21、SpringCloud Gateway配置、spring cloud gateway系列教程2——GatewayFilter_下篇等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9556934.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存