系列文章目录
第一章 关于perimeterx请求分析
前言
最近,抓取国外网站,碰到了另外一种反爬,觉得很有意思,就再次写文章发布出来。
一、perimeterx是什么?
perimeterx 是国外一家做网站防护的公司。其主要特征是,在网页的cookies中会有_px3、_px2等样式,当风控变得更加严格是会出现人机校验
二、perimeterx请求分析
1.分析
打开浏览器控制台,简单抓包分析。我们知道网站请求的api。
此处就是提交的表单,由于数据太长,为了方便看提交的表单有哪些。于是做个简单处理:
payload=aUkQRhAIEGJqAwIKAwQQHhBWEAhJEGJqAwIBBAIQCBBaRkZCQQgdHUVFRRxGWxxRXV8dEB4QYmoDAgsACxAIAh4QYmoDAwMKBBAIEGVbXAEAEB4QYmoDAgQAABAIAh4QYmoDAgAFABAIAwYLAG^AYeEGJqAwILBQIQCAEEAgIeES}DNGJqK8AwIDCCwYNQCaA>MEBAcKADgQACwUKAAIeEGJqAwMCAgYQCAMEBAcKAgQ`BAgAKKAAIe}EGJqAwIAAgQQCBALAQYFA1MEAh8GUQFWHwGKMDV71YfUwVQAx8LVFEAAAAFUQMLBwoQHhB7iagMCAgoKEAhGQEdXT09v
appId=PXDl82I3Ui
tag=v8.0.2
uuid=93471a60-4c3d-11ed-a7b1-9fc2227c1958
ft=278
seq=0
en=NTA
pc=6661667975807712
p1=ext
p2=0183d9calkmh02a70aadc956e1e0306f005894700bd0
p5=homepage
# 可以得知道,表单请求过去需要['payload', 'appId', 'tag', 'uuid', 'ft', 'seq', 'en', 'pc', 'p1', 'p2', 'p5']
简单分析下,appI应该是定值,tag很像版本号,seq是验证了几次,en是定值。(还有其他的几个值,我们后续会继续分析)。
2.调试
老方法,既然我们看到了该请求的表单数据,打断点调试。经过跟踪,看到原始的js代码
发现该处js 已经被混淆了,需要进行解混淆,方便调试,下面是做了简单的反混淆:
该有的变量名都出来。然后开始调试(部分如下):
//payload 生成的位置
var a, u, f = pc(), l = It(z(n), (a = cf.ln,
u = cf.Cn,
[Wa, a, u].join(":"))), C = {
vid: Rn(),
tag: cf.ln,
appID: cf.Y,
cu: Wa,
cs: f,
pc: l
}, D = Vc(n, C)
//tag、appId 位置
un = "v8.0.2", fn = "PXDl82I3Ui"
//uuid bc()
// ft cf.Cn = "278"
// en "NTA"
经过调试,找到上面变量生成的 位置,剩下的就是扣代码环节了,代码扣好后,即可进行请求。
下面是payload生成代码效果:
总结
以上就是今天要讲的内容,本文仅仅简单介绍了px的参数生成以及扣js代码使用,而px不仅仅是简单的代码逆向,要出处理px,就要解决风控、环境监测等其他的检测。这个后续在一起分析