两周前,0kraven发现了一个可以通过92开头的巴基斯坦手机号获取用户对应的身份信息数据接口脚本,看了下各类评论,覆盖率很高,脚本中使用的接口站点如下:
成品github地址查询脚本:https://github.com/0kraven/PakSimLookup
效果如下:
脚本用的是这个pakistandatabase.com站点的接口,通过输入手机号或cnic,获取到用户的姓名,身份证,地址。
脚本结构和功能:
-
导入模块:
-
argparse
:用于解析命令行参数。 -
requests
:用于发送 HTTP 请求。 -
BeautifulSoup
(来自bs4
):用于解析 HTML 内容。 -
PrettyTable
:用于格式化和美化输出结果。 -
函数分析:
-
这是脚本的主函数,负责:
-
该函数使用
argparse
解析命令行参数,支持--number
和--cnic
参数。返回解析后的参数,如果没有提供有效参数,则显示使用帮助信息。 -
该函数负责与目标网站(
https://pakistandatabase.com/databases/sim.php
)进行交互,发送一个 POST 请求,传递用户提供的查询参数(number
或cnic
),并获取响应。 -
使用
BeautifulSoup
解析返回的 HTML 内容,查找包含所需信息的表格(api-response
)。 -
然后,提取表格中的列标题和行数据,将其格式化为
PrettyTable
对象,最后返回该表格以便在命令行中显示。 -
这个函数用来验证输入的 CNIC 是否符合格式。CNIC 必须是 13 位数字且没有连字符。
-
这个函数用来验证输入的电话号码是否合法。它要求电话号码以
92
开头,并且是 12 位数字(这是巴基斯坦电话号码的格式)。 -
该函数显示工具的帮助信息和使用方式,包括如何输入电话号码或 CNIC。
-
show_banner()
: -
validate_phone_number(number)
: -
validate_cnic(cnic)
: -
fetch_details(arg)
: -
parse_arguments()
: -
main()
: -
调用
parse_arguments()
解析命令行输入。 -
根据用户输入验证电话号码或 CNIC 格式。
-
调用
fetch_details()
获取相关数据并格式化输出。 -
如果没有提供有效参数或查询失败,会输出错误消息。
-
命令行使用示例:
-
查询电话号码:
python3 paksimlookup.py --number 923001234567
-
查询 CNIC:
python3 paksimlookup.py --cnic 1234512345671
-
返回的数据:
-
Mobile number (手机号)
-
Name (姓名)
-
CNIC (身份证号)
-
Address (地址)
-
该脚本会从目标网站获取的数据包含表格,显示类似如下信息:
-
通过
PrettyTable
格式化后,会以类似表格的格式输出在命令行中。
详细流程分析
-
用户输入:
-
用户可以通过命令行提供
--number
或--cnic
参数。脚本会根据输入的参数类型(电话号码或 CNIC)执行相应的验证。 -
参数验证:
-
输入的电话号码必须以
92
开头并且是 12 位数字。 -
输入的 CNIC 必须是 13 位数字且没有连字符。
-
请求网站获取数据:
-
一旦验证通过,脚本会通过
requests.post()
向目标网站发送一个带有查询参数的 POST 请求。 -
请求成功后,脚本会使用
BeautifulSoup
解析 HTML,查找包含查询结果的表格,并将表格数据提取出来。 -
数据输出:
-
查询结果会以美观的表格格式输出,包含从网站返回的数据,如手机号、姓名、地址等。
-
错误处理:
-
如果请求失败,或者没有找到数据,脚本会显示适当的错误信息。例如,无法连接到服务器或没有找到符合条件的记录。
原文始发于微信公众号(军机故阁):巴基斯坦手机号获取个人信息接口
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论