反爬虫项目开发
项目介绍
项目背景
为什么要有反爬虫项目
爬虫程序大量占用我们的系统资源,比如带宽/计算能力等
爬虫程序进行预订/抢票影响我们的正常业务.
导入反爬WEB工程
反爬虫项目数据流程走向
逻辑架构
功能描述
数据管理模块
流程管理
非功能性描述
数据的组成:
点击流(信息采集服务器)/业务日志(业务服务器)/第三方对接
数据量级计算方式:
峰值数数据量有多大?
将8亿条平均到每秒,峰值每秒20万
公司集群分类:
数据库ER图
PowerDesigner的使用
新建一个model
导出SQL文件
防爬规则
数据源
数据源作为反扒的各种指标计算来源,主要包含用户请求携带的各种参数.比如:用户来源的URL,用请求的URL,用户的SessionID.查询相关的出发地/目的地/出发时间
防爬规则
爬虫程序的特点
数据采集
安装Openresty
配置Openresty
./configure --prefix=/usr/local/openresty --with-http_stub_status_module
如果缺少依赖,安装依赖
yum install readline-devel pcre-devel openssl-devel perl gcc
如果不想自己编译,资料中 反扒参考资料\OpenResty\编译后\openresty是编译好的.直接放入Linux中就可以使用
Lua语法入门
使用方式
交互方式
文件方式
数据类型
java中的数据类型
数字相关的:
整型:
byte/int/short/long
浮点型:
float/double
布尔类型: boolean
字符类型: char
Lua 数据类型
nil:==java中的null
boolean:布尔类型
number:数字类型,不区分整型和浮点型
string:字符串
userdata: C的数据结构
function:函数(方法)
thread:线程
table:集合/数组/Map
Lua运算符
赋值运算符
--赋值运算符
a = 3
b = "hello"
print(a)
print(b)
c,d = 1,2
print(c,d)
e,f = 1,2,3
print(e,f)
g,h = 1
print(g,h)
str = "hello" .. "world"
print(str)
字符串的拼接操作不能使用"+",应该使用".."进行拼接
算术运算符
-- 算术运算符
-- 加减乘除取余
a,b = 10,20
print("a+b=" .. a + b)
print("a-b=" .. a - b)
print("a*b=" .. a * b)
print("a/b=" .. a / b)
print("a%b=" .. a % b)
关系运算符
-- 关系运算符
print("========= 关系运算符 =========")
a,b = 1,2
print("a等于b" .. a == b)
print("a不等于b" .. a ~= b)
print(a > b)
print(a >= b)
print(a < b)
print(a <= b)
逻辑预算符
-- 逻辑运算符
print("========= 逻辑运算符 =========")
a,b = true,false
print(a and b)
print(a or b)
print (not b)
其它运算符
"#"用来获取字符串或者集合的长度
--其它运算符
print("========其它运算符===========")
str = "hello java"
print(#str)
Lua流程控制
if条件判断
-- 条件控制
-- if条件判断
a = 10
if a > 5
then
print("a>5")
end
-- if - else 条件判断
if a > 11
then
print("a>11")
else
print("a<=11")
end
-- if 嵌套
if a > 5
then
print("a>5")
if a < 12
then
print("a<12")
end
end
循环
while循环
--While循环
print("=======while循环=======")
while a > 0
do
print(a)
a = a - 1
end
repeat循环
-- repeat循环
print("=======repeat循环=======")
repeat
print(a)
a = a + 1
until a > 10
repeat循环最少执行一次
假如一张纸的厚度为0.04,累计叠多少次才能超过珠穆朗玛峰的高度8847.
for循环
--for循环
print("=======for循环=======")
for b = 10, 1,-1
do
print(b)
end
for循环后面3个参数
Lua的数组
--lua的数组
arr = {"zhangsan","lisi","wangwu"}
print(#arr)
for a = 1,#arr
do
print(arr[a])
end
--使用泛型for循环
for i,name in ipairs(arr)
do
print(i,name)
end
注意:
使用ipairs的时候,只能针对于集合/数组
遍历Map数据结构的时候需要使用pairs关键字
原文:https://www.cnblogs.com/jeasonchen001/p/11192075.html