php ip库_ZhouZiYang__的博客-CSDN博客


本站和网页 https://blog.csdn.net/qq_42030417/article/details/125603084 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

php ip库_ZhouZiYang__的博客-CSDN博客
php ip库
ZhouZiYang__
已于 2022-07-05 15:27:02 修改
836
收藏
分类专栏:
php
文章标签:
tcp/ip
网络
服务器
于 2022-07-04 16:32:54 首次发布
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42030417/article/details/125603084
版权
php
专栏收录该内容
35 篇文章
0 订阅
订阅专栏
QQWry.dat文件是显IP版QQ的数据库文件,用于获取对方IP及位置,纯真IP数据库也采用了这个格式,并沿用至今。 纯真IP库是民间自发收集、提交、聚合而来的数据库,囊括了国内外的大量IP数据,部分记录甚至比商业付费数据库更加准确。它的官网提供了记录提交和纠错的功能,来自全国各地的网友将不同地区的ISP及位置数据上传,管理员在统一整合后每7天更新一次。从2005年到现在的16年间,这个数据库已经聚合了超过六十万条IP记录。
纯真IP库是完全免费的,它的官网上有在线查询功能,同时也可以下载离线数据库用于低延迟场景,但数据不可用于商业用途。这些记录在稍加分析处理后能达到不错的效果,基本满足定位IP所处城市及ISP信息的需求,不过它目前只支持IPv4地址,在一些应用场景下稍显不足。
获取数据文件 纯真IP数据库的文件名为 qqwry.dat,这个文件在官网上并没有公开链接可以下载,官方只提供了一个Windows工具用于查询和升级数据库。因此,如果想在服务器上实现数据库的获取与升级,必须模拟官方工具的更新机制。
手动获取 如果仅用于临时测试,可以通过下载并安装纯真IP数据库查询器来得到这个文件,它内置了 qqwry.dat 文件,同时也具备自动更新机制。
你可以在官网下载最新版的Windows安装包,将下载的 setup.zip 压缩包解压,打开里面的 setup.exe,默认安装目录为 C:\Program Files (x86)\cz88.net\ip,已解密的 qqwry.dat 文件就放置在这个文件夹下。
点击工具的解压按钮可以将数据库导出为文本文件。
可以发现,每条记录均由起始IP、终止IP和两个数据段共四部分组成,且前后两条记录的IP范围是连续相接的,覆盖了从 0.0.0.0 到 255.255.255.255 的所有IPv4地址。
自动获取 纯真官网没有提供 qqwry.dat 的下载,但其Windows查询工具内置了数据库更新功能,可以通过分析它的行为机制来获取下载和解密的算法。
抓包获取下载源 对程序抓包时,检测到它会向 update.cz88.net 发起GET请求,分别下载 /ip/copywrite.rar 与 /ip/qqwry.rar 两个文件,使用以下命令来获取它们:
获取加密的源文件
shell> wget http://update.cz88.net/ip/copywrite.rar ··· shell> wget http://update.cz88.net/ip/qqwry.rar ···
自动化脚本 将上述流程封装为一个脚本,实现自动下载并解密,输出 qqwry.dat 文件。
shell脚本
shell> php -v ···PHP版本信息··· shell> vim qqwryUpdate.sh 写入以下内容
#!/bin/sh cd dirname $0 mkdir -p qqwryTemp cd qqwryTemp wget http://update.cz88.net/ip/copywrite.rar wget http://update.cz88.net/ip/qqwry.rar cat > unlock.php <<EOF <?php \$copywrite = file_get_contents("copywrite.rar"); \$qqwry = file_get_contents("qqwry.rar"); \$key = unpack("V6", \$copywrite)[6]; for (\$i = 0; \$i < 512; \$i++) { \$key = ((\$key * 2053) + 1) & 0xFF; \$qqwry[\$i] = chr(ord(\$qqwry[\$i]) ^ \$key); } \$qqwry = gzuncompress(\$qqwry); \$fp = fopen("qqwry.dat", "wb"); fwrite(\$fp, \$qqwry); fclose(\$fp); ?>
EOF php unlock.php cd … cp -f qqwryTemp/qqwry.dat qqwry.dat rm -rf qqwryTemp/ 运行脚本即可自动获取 qqwry.dat 文件
shell> sh qqwryUpdate.sh 可以使用 crontab 等定时工具,按时运行脚本拉取更新,保持 qqwry.dat 文件一直处于最新版本
部署定时任务
shell> crontab -e
设置为每天00:00时运行更新脚本,具体参数自行更改
00 0 * * * /var/www/echoIP/backend/qqwryUpdate.sh 文件二进制结构 在得到 qqwry.dat 文件以后,使用程序自动分析结构、读取数据
一个典型的记录条目如下: 起始IP:42.83.64.0 终止IP:42.83.79.255 记录A:广东省广州市 记录B:电信天翼云计算数据中心 在文件结构上,qqwry.dat 可分为三部分,分别是文件头、记录区和索引区,文件头指出索引区的位置,索引区信息指明记录区的偏移量。
特殊记录 数据库的最后一条记录不包含IP信息,而是数据库的版本内容,格式如下:
起始IP:255.255.255.0 终止IP:255.255.255.255 记录A:纯真网络 记录B:XXXX年XX月XX日IP数据 这一部分属于特殊IPv4段 240.0.0.0/4,被标记为 SPECIAL-IPV4-FUTURE-USE-IANA-RESERVED,即IANA特殊保留地址。对于这部分,我们必须对其劫持并返回正确的结果,一般标记为 IANA保留地址。同时,也可以根据这一段信息来提取版本号,格式为 YYYYMMDD,用于标记当前数据库的版本信息。
代码示例
使用PHP实现,操作被封装为 QQWry 类,代码保存为 qqwry.php。
<?php
namespace classes;
// 数据来源:纯真IP数据库 qqwry.dat
// 初始化类:new QQWry($fileName)
// 请求方式:getDetail($ip)
// 返回格式:
// {
// "beginIP": IP段起始点
// "endIP": IP段结束点
// "dataA": 数据段1
// "dataB": 数据段2
// }
//
// 请求版本:getVersion()
// 返回格式:YYYYMMDD
class QQWry
private $fp; // 文件指针
private $firstRecord; // 第一条记录的偏移地址
private $lastRecord; // 最后一条记录的偏移地址
private $recordNum; // 总记录条数
public function __construct($fileName = EXTEND_PATH . 'data/qqwry.dat')
{ // 构造函数
$this->fp = fopen($fileName, 'rb');
$this->firstRecord = $this->read4byte();
$this->lastRecord = $this->read4byte();
$this->recordNum = ($this->lastRecord - $this->firstRecord) / 7; // 每条索引长度为7字节
public function __destruct()
{ // 析构函数
if ($this->fp) {
fclose($this->fp);
private function read4byte()
{ // 读取4字节并转为long
return unpack('Vlong', fread($this->fp, 4))['long'];
private function read3byte()
{ // 读取3字节并转为long
return unpack('Vlong', fread($this->fp, 3) . chr(0))['long'];
private function readString()
{ // 读取字符串
$str = '';
$char = fread($this->fp, 1);
while (ord($char) != 0) { // 读到二进制0结束
$str .= $char;
$char = fread($this->fp, 1);
return $str;
private function zipIP($ip)
{ // IP地址转为数字
$ip_arr = explode('.', $ip);
$tmp = (16777216 * intval($ip_arr[0])) + (65536 * intval($ip_arr[1])) + (256 * intval($ip_arr[2])) + intval($ip_arr[3]);
return pack('N', intval($tmp)); // 32位无符号大端序长整型
private function unzipIP($ip)
{ // 数字转为IP地址
return long2ip($ip);
public function getVersion()
{ // 获取当前数据库的版本
fseek($this->fp, $this->lastRecord + 4);
$tmp = $this->getRecord($this->read3byte())['B'];
return substr($tmp, 0, 4) . substr($tmp, 7, 2) . substr($tmp, 12, 2);
public function getDetail($ip)
{ // 获取IP地址区段及所在位置
if (!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { // 判断是否为IPv4地址
return null;
fseek($this->fp, $this->searchRecord($ip)); // 跳转到对应IP记录的位置
$detail['beginIP'] = $this->unzipIP($this->read4byte()); // 目标IP所在网段的起始IP
$offset = $this->read3byte(); // 索引后3字节为对应记录的偏移量
fseek($this->fp, $offset);
$detail['endIP'] = $this->unzipIP($this->read4byte()); // 目标IP所在网段的结束IP
$tmp = $this->getRecord($offset); // 获取记录的dataA与dataB
$detail['dataA'] = $tmp['A'];
$detail['dataB'] = $tmp['B'];
if ($detail['beginIP'] == '255.255.255.0') { // 去除附加信息
$detail['dataA'] = 'IANA';
$detail['dataB'] = '保留地址';
if ($detail['dataA'] == ' CZ88.NET' || $detail['dataA'] == '纯真网络') {
$detail['dataA'] = '';
if ($detail['dataB'] == ' CZ88.NET') {
$detail['dataB'] = '';
return $detail;
private function searchRecord($ip)
{ // 根据IP地址获取索引的绝对偏移量
$ip = $this->zipIP($ip); // 转为数字以比较大小
$down = 0;
$up = $this->recordNum;
while ($down <= $up) { // 二分法查找
$mid = floor(($down + $up) / 2); // 计算二分点
fseek($this->fp, $this->firstRecord + $mid * 7);
$beginip = strrev(fread($this->fp, 4)); // 获取二分区域的下边界
if ($ip < $beginip) { // 目标IP在二分区域以下
$up = $mid - 1; // 缩小搜索的上边界
} else {
fseek($this->fp, $this->read3byte());
$endip = strrev(fread($this->fp, 4)); // 获取二分区域的上边界
if ($ip > $endip) { // 目标IP在二分区域以上
$down = $mid + 1; // 缩小搜索的下边界
} else { // 目标IP在二分区域内
return $this->firstRecord + $mid * 7; // 返回索引的偏移量
return $this->lastRecord; // 无法找到对应索引,返回最后一条记录的偏移量
private function getRecord($offset)
{ // 读取IP记录的数据
fseek($this->fp, $offset + 4);
$flag = ord(fread($this->fp, 1));
if ($flag == 1) { // dataA与dataB均重定向
$offset = $this->read3byte(); // 重定向偏移
fseek($this->fp, $offset);
if (ord(fread($this->fp, 1)) == 2) { // dataA再次重定向
fseek($this->fp, $this->read3byte());
$data['A'] = $this->readString();
fseek($this->fp, $offset + 4);
$data['B'] = $this->getDataB();
} else { // dataA无重定向
fseek($this->fp, -1, SEEK_CUR); // 文件指针回退1字节
$data['A'] = $this->readString();
$data['B'] = $this->getDataB();
} else if ($flag == 2) { // dataA重定向
fseek($this->fp, $this->read3byte());
$data['A'] = $this->readString();
fseek($this->fp, $offset + 8); // IP占4字节, 重定向标志占1字节, dataA指针占3字节
$data['B'] = $this->getDataB();
} else { // dataA无重定向
fseek($this->fp, -1, SEEK_CUR); // 文件指针回退1字节
$data['A'] = $this->readString();
$data['B'] = $this->getDataB();
$data['A'] = iconv("GBK", "UTF-8", $data['A']); // GBK -> UTF-8
$data['B'] = iconv("GBK", "UTF-8", $data['B']);
return $data;
private function getDataB()
{ // 从fp指定偏移获取dataB
$flag = ord(fread($this->fp, 1));
if ($flag == 0) { // dataB无信息
return '';
} else if ($flag == 1 || $flag == 2) { // dataB重定向
fseek($this->fp, $this->read3byte());
return $this->readString();
} else { // dataB无重定向
fseek($this->fp, -1, SEEK_CUR); // 文件指针回退1字节
return $this->readString();
调用示例,文件名为 demo.php ,同目录下放置 qqwry.dat 数据文件。
<?php
include("qqwry.php"); // 引入代码
$demo = new QQWry('qqwry.dat'); // 初始化类
echo '数据库版本:' . $demo->getVersion() . PHP_EOL;
$detail = $demo->getDetail('8.8.8.8'); // 调用查询函数
var_dump($detail); // 输出查询结果
?>
···
输出查询结果
array(4) { [“beginIP”]=> string(7) “8.8.8.8” [“endIP”]=> string(7) “8.8.8.8” [“dataA”]=> string(6) “美国” [“dataB”]=> string(66) “加利福尼亚州圣克拉拉县山景市谷歌公司DNS服务器” }
ZhouZiYang__
关注
关注
点赞
收藏
打赏
知道了
评论
php ip库
纯真IP数据库文件QQWry.dat的获取与解密,基于二进制的文件结构分析以及代码示例。QQWry.dat文件是显IP版QQ的数据库文件,用于获取对方IP及位置,纯真IP数据库也采用了这个格式,并沿用至今。纯真IP库是民间自发收集、提交、聚合而来的数据库,囊括了国内外的大量IP数据,部分记录甚至比商业付费数据库更加准确。它的官网提供了记录提交和纠错的功能,来自全国各地的网友将不同地区的ISP及位置数据上传,管理员在统一整合后每5天更新一次。从2005年到现在的16年间,这个数据库已经聚合了超过五十万条IP
复制链接
扫一扫
专栏目录
PHP的IP地址库使用方法
03-17
PHP解析IP地址,解析IP的归属地,内含IP地址库文件
php的ip库怎么使用,如何用php限制ip地址范围
weixin_33842051的博客
03-22
72
function get_real_ipaddress() {if (!empty($_SERVER['HTTP_CLIENT_IP'])) {return $_SERVER['HTTP_CLIENT_IP'];} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {return $_SERVER['HTTP_X_FORWARDED_FOR'];}...
1 条评论
您还未登录,请先
登录
后发表或查看评论
php ip 库,php使用GeoIP库实例
weixin_30444191的博客
03-09
553
php使用GeoIP库实例需要注意的是maxmind是geoip数据库的提供方,就跟随百分网小编一起去了解下吧,想了解更多相关信息请持续关注我们应届毕业生考试网!同时也提供了很多语言的sample和api说明文档。比如php,和php的.geoip库是有很大区别的,包含使用方式,接口函数。php官方的geoip需要配置php环境,加载geoip.dll库,并在php.ini中指定GEOIP库地址。...
制作mysql版的ip数据库 代码基于PHP
菠菜的专栏
02-05
104
1,ip数据数来源 纯真
点击右下的解压,获得ip数据的txt版本。
我们就是要把这个txt文本里的数据逐行导入到数据库
2,创建数据表
CREATE TABLE `ip_data` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`ipstart` int(10) unsigned NOT NULL COMMENT 'ip开始',
`ipend` int(10) unsigned NOT NULL COMMENT 'ip结束',
`r
使用php来读取纯真ip数据库
无知人生,记录点滴
06-14
263
<?php
/**
* IP 地理位置查询类
* @author joyphper
* @version 1.0
* @copyright 2010 joyphper.net
*/
class ip_area {
/**
* @var resource
*/
private $fp;//IP库文件指针 resource
private $firstip...
php ip 库,php IP获取城市API(纯真IP数据库)
weixin_31591833的博客
03-09
523
本节主要内容:根据IP地址获取城市名称的php代码。用到了纯真IP数据库实现。本例php代码,透过纯真IP数据库的支持,可以精确地定位城市位置。支持多种查询方式形如:本机IP、自定义IP、自定义域名三种方式。http://domain/ip 直接查询本机IP所在城市位置http://domain/ip/?q=xxx.xxx.xxx.xxx 获取自定义IP的城市位置http://domain/ip/...
基于纯真本地数据库的 IP 地址查询 PHP 源码
withoutfear的博客
01-10
507
本模块会在第一次被调用时自动从纯真网下载最新的 IP 数据库到本地,因此第一次进行查询时会有点慢。如果你的服务器因为某些原因,无法连接到纯真网获取数据库,可以直接下载离线版,并将。值改为“0”(即永不自动更新数据库)。将上面的模块代码保存为。离线版情趣纯真官网下载.
利用纯真ip库搭建ip查询服务
qq_40734247的博客
12-10
2468
前言: 前段时间听过了纯真ip数据库,只知道是一个qqwry.dat文件,里面有一些网友收集的数据,可以用来查询ip的大致位置,即ip定位。正好,我最近在一个项目里面看到了这个数据库,它就是将qqwry.dat集成到springboot项目里面,做成一个查询服务来使用的。所以,我也想来试试,但是我不是直接使用qqwry.dat这个文件。我换一种方式,我才用将qqwry.dat中的ip数据导入mysql数据库中,通过数据库的查询来提供ip位置查询功能。
gitee代码地址: 纯真ip库服务搭建
数据准备
首先
php判断路径跳转_PHP中根据IP地址判断城市实现城市切换或跳转代码
weixin_30609645的博客
03-09
102
获取IP地址function GetIP() {if ($_SERVER["HTTP_X_FORWARDED_FOR"])$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];else if ($_SERVER["HTTP_CLIENT_IP"])$ip = $_SERVER["HTTP_CLIENT_IP"];else if ($_SERVER["REMOTE_ADDR"...
ThinkPHP中IP地址定位,包括IP地址库文件
兄弟连_战地日记
08-30
1623
前几天,研究了一下TP中IP地址定位,着实费了一些时间,现在解决了,分享给大家。IP地址库有点大,去这里下载http://download.csdn.net/detail/man_quan/4636418用于IP地址的定位,解压后的类库文件放入ThinkPHP/Extend/Library/ORG/Net(如果不存在请手动创建)目录下面然后使用import方法引入后操作
import('OR
php-ip:适用于PHP的IPv4IPv6操作库
04-29
PHP IP库 受Python 启发PHP的IPv4 / IPv6操作库。 要求 PHP> = 7.0 启用了IPv6支持 GMP扩展名( ) 安装 推荐的方法是安装lib。 只需运行composer require rlanvin/php-ip使其自动安装并包含在composer.json 。 ...
PHP IP访问控制
07-15
PHP IP访问控制
IP地址库文件
08-21
IP地址库,直接输入IP,返回城市,线路或所属公司 php使用教程https://blog.jam00.com/article/info/46.html
PHP基于新浪IP库获取IP详细地址的方法
10-19
主要介绍了PHP基于新浪IP库获取IP详细地址的方法,涉及php正则、curl及编码转换相关操作技巧,需要的朋友可以参考下
2021年5月最新IP数据库共529330条,PHP解析类。
04-26
基于最新2021年5月IP数据库,共529330条,并对中文乱码进行处理,使用简单方便,如果Thinkphp中使用请添加命名空间。 使用方法: $IP = new IpLocation('QQWry.dat'); $area = $IP->getlocation('113.108.182.52')...
阿里ip查询 php使用,ThinkPHP使用UTFWry地址库进行IP定位实例
weixin_39994949的博客
03-11
68
可以在官网的 http://www.thinkphp.cn/extend/223.html下载IP定位扩展类库,或者下载扩展包( http://www.thinkphp.cn/down/253.html)里面也已经包含该扩展类了。如果是单独下载的上传类库,把解压后的IpLocation.class.php 放入ThinkPHP/Extend/Library/ORG/Net/(如果没有请手动创建)目...
PHP读取纯真IP地址数据库
mydudu2005的专栏
12-11
134
纯真IP地址数据库应该是国内最流行的IP地址数据库
纯真IP地址数据库(官方下载)
http://www.cz88.net/fox/ipdat.shtml
<?php
/*--------------------------------------------------
ip2address [qqwry.dat]
-----------------------...
php调用纯真ip,php调用纯真IP数据库进行IP定位
weixin_39757743的博客
03-16
285
调用纯真IP数据库进行IP定位 使用exec函数调用系统Ping服务 支持linux与windows双系统运行 json格式数据回调,支持最大、最小、平均延迟返回/**调用系统进行ping动作资源来自网络由Youngxj整理状态码:1000->成功,1001->error,1002->禁ping,1003->找不到主机**/header("Content-type: tex...
php ip归属地数据库下载,IP归属地数据库,附带C,PHP访问代码
weixin_42389478的博客
04-15
206
最近有打算给博客做个统计插件,看看都是哪儿来的朋友在看我的博客儿,需要一个详细的IP地址归属地数据库。网上找了个纯真的MySQL版的,30多万条数据占了20M左右的数据库空间,觉得有点浪费数据库空间,而且数据库查询时间太慢,特别是要一次性查多个结果时,更是不得了.最主要的是这种应用场合不适合做成数据库形式的。所以就准备自己做数据库了,自己也有50000亿条数据的数据文件的设计经验。这才30多万条没...
php获取用户登录的IP
最新发布
02-07
可以使用 PHP 中的 `$_SERVER['REMOTE_ADDR']` 来获取用户的 IP 地址。
例如:
```
$user_ip = $_SERVER['REMOTE_ADDR'];
echo "用户的 IP 地址是: $user_ip";
```
注意,如果用户使用了代理服务器,则 `$_SERVER['REMOTE_ADDR']` 可能会显示代理服务器的 IP 地址,而不是用户的真实 IP 地址。要获取用户的真实 IP 地址,可以使用一些其他的方法,例如:
```
// 获取用户真实 IP 地址
function get_client_ip() {
$ipaddress = '';
if (isset($_SERVER['HTTP_CLIENT_IP']))
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_X_FORWARDED']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_FORWARDED']))
$ipaddress = $_SERVER['HTTP_FORWARDED'];
else if(isset($_SERVER['REMOTE_ADDR']))
$ipaddress = $_SERVER['REMOTE_ADDR'];
else
$ipaddress = 'UNKNOWN';
return $ipaddress;
$user_ip = get_client_ip();
echo "用户的 IP 地址是: $user_ip";
```
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
ZhouZiYang__
CSDN认证博客专家
CSDN认证企业博客
码龄5年
暂无认证
61
原创
28万+
周排名
26万+
总排名
32万+
访问
等级
2252
积分
864
粉丝
130
获赞
43
评论
722
收藏
私信
关注
分类专栏
php
35篇
svn
1篇
linux
9篇
mysql
7篇
微信
6篇
git
1篇
协议规范
4篇
底层
1篇
最新评论
openId和unionId的区别
ZhouZiYang__:
多个公众号需要数据互通就用UnionID 没互通需求可以忽略
openId和unionId的区别
大北北:
解释的通俗易懂,怎么获取来个例子呗。
nginx反向代理
ZhouZiYang__:
qq 934521961
nginx反向代理
xunbingkong:
博主,为什么我设置了反向代理,但是访问的时候还是nginx页面呢,就很奇怪
server {
listen 80;
server_name localhost;
#charset koi8-r;
access_log logs/host.access.log main;
location / {
root html;
proxy_pass http://127.0.0.1:8080;
index index.html index.htm;
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
[/code]
nginx反向代理
소순별:
能问一下 代理后面的地址我弄得变量为啥不执行呢
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
steam API
php 解密session字符串
tp5定时任务
2022年3篇
2021年5篇
2020年11篇
2019年27篇
2018年44篇
目录
目录
分类专栏
php
35篇
svn
1篇
linux
9篇
mysql
7篇
微信
6篇
git
1篇
协议规范
4篇
底层
1篇
目录
评论 1
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
红包个数最小为10个
红包总金额
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
打赏作者
ZhouZiYang__
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值