欢迎光临散文网 会员登陆 & 注册

基于tshark在原生php上实现ja3

2023-07-23 11:05 作者:PandaHB  | 我要投稿

他有什么用? 使用ja3来验证是否用户是爬虫,在传统的方案中,通常基于识别header来判断用户是机器人,但是这种方法极有可能被伪造header而误判,有时候管理员可能不希望某一个用户来访问,所以拉黑IP,但是如果他使用代理IP或者重启光猫,那么他又可以继续访问了,在现在绝大部分网站是支持ssl,所以我们可以通过tls指纹来判断用户是否是机器人。 例如:requests、httpx以及CURL,无论如何伪造信息他们的指纹都是相同的,所以管理员只需要记住他们的指纹,那么下一次遇到相同指纹时,就可以进行拦截。 项目原理 该项目基于php-ja3的原生移植,项目地址:php-ja3,在这个项目中,他使用的tshark进行数据包拦截,获取到ja3后通过DataShare进行数据传输,但是,在实际业务环境中,我们可能不会去使用workman,为了使用这个功能需要再安装一个workman,所以我移植到原生php中。 由于DataShare只能使用workman,所以在该项目移植中,我使用Redis来交互数据。 如何使用? 1、下载phpja3.zip 2、配置main.php中相关配置 12行配置tshark路径,通常情况下,如果你将wireshark安装到C盘下,就不需要该操作,该项缺省值为 $tshark = 'C:\\PROGRA~1\\Wireshark\\tshark.exe';

24行配置redis信息,该项缺省值为redis默认端口和本地 $redis->

connect

(

'127.0.0.1'

,

6379

);

31行配置业务网卡,填写网卡名称,该项缺省值为本地回环网卡

define(

"NETWORK_INTERFACE"

,

"Adapter for loopback traffic capture"

);

3、配置完成后直接启动该文件 php main.php 启动成功后应该是如下这样的

PS

D:\important\desktop\php_ja3> php .\main.php

Capturing

on

'Adapter for loopback traffic capture'

** (tshark:

15056

)

04

:

19

:

48

.

346861

[Main MESSAGE] -- Capture started. ** (tshark:

15056

)

04

:

19

:

48

.

349348

[Main MESSAGE] -- File:

"C:\Users\Administrator\AppData\Local\Temp\wireshark_NPF_LoopbackLLNM81.pcapng"

4、配置你的业务环境 样例代码,从redis中获取ja3信息

// usleep(50000);

sleep(

1

);

$redis

=

new

Redis();

$redis

->connect(

'127.0.0.1'

,

6379

);

$REMOTE_ADDR_PORT

=

$_SERVER

[

'REMOTE_PORT'

];

$ja3

=

'ja3_'

.

$REMOTE_ADDR_PORT

;

echo

$ja3

;

echo

$redis

->get(

$ja3

); 由于通过抓包嗅探,你需要延迟3000微秒以上第一次才会获取成功,如果你对这方面没有需求且没有延迟,第一次获取可能获取为空。 验证:浏览器环境 我们可以获取出用户的指纹

验证:爬虫 第一次

第二次

无论我们怎么变换模拟的header或其他请求信息,他的指纹都是相同的,我们只需要记录这个指纹,那么就可以轻松检测出爬虫。

基于tshark在原生php上实现ja3的评论 (共 条)

分享到微博请遵守国家法律