穿透非标简历黑盒:从盲目背调到数据驱动的合规管理
在现代企业人力资源管理与金融信贷业务中,个人背景的真实性与合法性审查是构筑风控体系的第一道防线。传统的背景调查往往依赖人工核实与候选人主动披露,这种模式不仅效率低下,且极易遗漏关键的法律纠纷记录。特别是频繁产生劳动争议、或身负失信记录的人员,一旦引入企业内部或赋予信贷额度,将给业务带来难以预估的经济损失与名誉风险。
为了解决这一行业痛点,天远劳动仲裁信息查询 API 提供了一套全方位、时效化的法律风险查询机制。该接口专门针对企业招聘背景调查、金融机构信贷审核、合作伙伴资质评估等场景设计。通过输入核心身份信息,系统能够深度聚合该人员的劳动争议、社会保险纠纷、人事争议及失信限高记录,为企业的每一次用人或合作决策提供坚实的数据支撑。
Python 集成实战:AES 加密与高可用请求管道构建
本接口在数据传输层面采用了严格的安全策略,所有业务请求参数均需进行加密处理。加密机制规定使用 AES-128 算法的 CBC 模式,配合 PKCS7 填充,且每次加密需生成随机的 16 字节 IV(初始化向量)。最终传输的数据是将 IV 与密文拼接后进行 Base64 编码的字符串。
下面这段代码展示了如何使用 Python 语言结合 pycryptodome 和 requests 库,优雅地封装这套复杂的加密解密逻辑,并实现具备超时控制与异常捕获的高可用请求类。
1. 核心请求参数配置
- 接口地址:
https://api.tianyuanapi.com/api/v1/IVYZ0S0D?t=13 位时间戳 - 请求方式:
POST - 明文入参:
id_card(身份证号),name(姓名)
2. 标准化调用代码 (Python)
import json
import base64
import time
import requests
import os
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
class LaborArbitrationClient:
def __init__(self, access_id, access_key_hex):
"""
初始化天远 API 客户端
"""
self.base_url = "https://api.tianyuanapi.com/api/v1/IVYZ0S0D"
self.access_id = access_id
# 密钥要求为 16 进制字符串,转换为 16 字节 bytes
self.access_key = bytes.fromhex(access_key_hex)
self.headers = {
"Access-Id": .access_id,
:
}
() -> :
payload_str = json.dumps(raw_data)
iv = os.urandom()
cipher = AES.new(.access_key, AES.MODE_CBC, iv)
ct_bytes = cipher.encrypt(pad(payload_str.encode(), AES.block_size))
base64.b64encode(iv + ct_bytes).decode()
() -> :
:
raw = base64.b64decode(encrypted_b64)
iv = raw[:]
ct = raw[:]
cipher = AES.new(.access_key, AES.MODE_CBC, iv)
pt = unpad(cipher.decrypt(ct), AES.block_size)
json.loads(pt.decode())
Exception e:
()
{}
() -> :
timestamp = (time.time() * )
url =
raw_params = {
: name,
: id_card
}
encrypted_data = ._encrypt_payload(raw_params)
body = {: encrypted_data}
:
response = requests.post(url, headers=.headers, json=body, timeout=)
response.raise_for_status()
res_json = response.json()
res_json.get() == :
._decrypt_payload(res_json.get())
:
()
{}
requests.exceptions.RequestException req_e:
()
{}
__name__ == :
client = LaborArbitrationClient(, )
result = client.query_arbitration_risk(name=, id_card=)
result:
()
()

