测试反欺诈系统时,最难的不是写代码,而是造数据。
一条可疑交易很少因为单个字段暴露问题。真正的风险藏在模式里:新账户突然添加大量收款人、短时间内密集交易、登录失败后立即换设备、KYC(了解你的客户)审核失败却与申报国籍不符、交易金额远超历史行为。用真实客户数据测试?风险太高,通常不被允许。随手编的假数据?又太平面,测不出东西。
![]()
于是有人做了这么个工具:fintech-fraud-sim,一个TypeScript写的命令行工具,专门生成带可配置欺诈模式的合成金融数据。
装完直接跑:
npx fintech-fraud-sim generate --users 1000 --fraud-rate 0.08
这条命令会吐出6份文件:users.csv、transactions.csv、users.json、transactions.json、summary.json,还有一份汇总。想纯CSV或者纯JSON?加--format参数。想指定输出目录?用--out。
作者造这个工具,是因为反欺诈产品到处都需要测试数据:仪表盘、QA夹具、规则引擎、风险评分服务、交易监控演示、分析管道、原型模型。但"真实"的欺诈测试数据不是随机几行就行,它需要在用户和交易之间保持一致的信号。
比如模拟"账户接管"场景,不能只标记一笔交易可疑。用户层面也得配套:登录失败记录、设备变更、IP国家与申报国籍对不上。这套CLI就是这么设计的。
生成的用户数据包含:用户ID、国家、账户年龄、KYC状态、KYC失败次数、设备数量、IP所属国家、申报国籍、24小时内登录失败次数、24小时内收款人数量、拒付次数、是否欺诈、欺诈模式、风险标签、原因代码。
交易数据包含:交易ID、用户ID、时间戳、金额、币种、渠道、收款人ID、收款人国家、设备ID、IP国家、状态、是否可疑、欺诈模式、原因代码。
注意:这个包不会生成真实姓名、邮箱、手机号、BVN(银行验证码)、NIN(国家身份证号)或真实银行账号。
目前内置的欺诈模式包括:骡子账户、账户接管、速度滥用、异常金额、夜间活动、新设备、高风险国家、结构化存款、拒付滥用、受益人异常、卡测试。可以指定具体模式,比如只测骡子账户和账户接管:--patterns mule,account_takeover。
还有个实用功能:确定性生成。加--seed参数,同样的种子产出同样的数据集。这对CI环境和可重复测试套件很有用。
项目本身也带测试,覆盖用户和交易生成、欺诈率处理、种子确定性输出、零欺诈率行为、欺诈模式逻辑、CSV和JSON写入器。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.