久久亚洲精品成人_国产精品欧美综合亚洲_亚洲va天堂va欧美ⅴa在线_91色视频在线观看_久久影院亚洲_一级黄色片播放_日韩av在线一区_精品一区二区在线看_老头吃奶性行交视频_日韩免费高清视频_天天操天天爽天天干_日本欧美在线视频

首頁 > 編程 > C# > 正文

C#讀取QQ純真IP數(shù)據(jù)庫QQWry.Dat的代碼

2020-01-24 03:51:01
字體:
來源:轉載
供稿:網(wǎng)友

純真版QQ IP數(shù)據(jù)庫

復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Web;
using System.Configuration;

namespace BLL
{
public class IPLocationSearch
{
private static readonly QQWry qq = new QQWry(ConfigurationManager.AppSettings["ip"] + "qqwry.dat");

public static IPLocation GetIPLocation(string ip)
{
return qq.SearchIPLocation(ip);
}
}

/*
使用方法:

例子:
BDQQ.Data.QQWry qq=new BDQQ.Data.QQWry("d://QQWry.Dat");
BDQQ.Data.IPLocation ip=qq.SearchIPLocation("127.0.0.1");//這里添寫IP地址
Console.WriteLine(ip.country);//國家
Console.WriteLine(ip.area);//地區(qū)
*/

//以下是類文件
//根據(jù)LumaQQ改寫而成.

/**/
///<summary>
/// QQWry 的摘要說明。
///</summary>
public class QQWry
{
//第一種模式
#region 第一種模式
/**/
///<summary>
///第一種模式
///</summary>
#endregion
private const byte REDIRECT_MODE_1 = 0x01;

//第二種模式
#region 第二種模式
/**/
///<summary>
///第二種模式
///</summary>
#endregion
private const byte REDIRECT_MODE_2 = 0x02;

//每條記錄長度
#region 每條記錄長度
/**/
///<summary>
///每條記錄長度
///</summary>
#endregion
private const int IP_RECORD_LENGTH = 7;

//數(shù)據(jù)庫文件
#region 數(shù)據(jù)庫文件
/**/
///<summary>
///文件對象
///</summary>
#endregion
private FileStream ipFile;

private const string unCountry = "未知國家";
private const string unArea = "未知地區(qū)";

//索引開始位置
#region 索引開始位置
/**/
///<summary>
///索引開始位置
///</summary>
#endregion
private long ipBegin;

//索引結束位置
#region 索引結束位置
/**/
///<summary>
///索引結束位置
///</summary>
#endregion
private long ipEnd;

//IP地址對象
#region IP地址對象
/**/
///<summary>
/// IP對象
///</summary>
#endregion
private IPLocation loc;

//存儲文本內容
#region 存儲文本內容
/**/
///<summary>
///存儲文本內容
///</summary>
#endregion
private byte[] buf;

//存儲3字節(jié)
#region 存儲3字節(jié)
/**/
///<summary>
///存儲3字節(jié)
///</summary>
#endregion
private byte[] b3;

//存儲4字節(jié)
#region 存儲4字節(jié)
/**/
///<summary>
///存儲4字節(jié)IP地址
///</summary>
#endregion
private byte[] b4;

//構造函數(shù)
#region 構造函數(shù)
/**/
///<summary>
///構造函數(shù)
///</summary>
///<param name="ipfile">IP數(shù)據(jù)庫文件絕對路徑</param>
#endregion
public QQWry(string ipfile)
{

buf = new byte[100];
b3 = new byte[3];
b4 = new byte[4];
try
{
ipFile = new FileStream(ipfile, FileMode.Open);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
ipBegin = readLong4(0);
ipEnd = readLong4(4);
loc = new IPLocation();
}

//根據(jù)IP地址搜索
#region 根據(jù)IP地址搜索
/**/
///<summary>
///搜索IP地址搜索
///</summary>
///<param name="ip"></param>
///<returns></returns>
#endregion
public IPLocation SearchIPLocation(string ip)
{
//將字符IP轉換為字節(jié)
string[] ipSp = ip.Split('.');
if (ipSp.Length != 4)
{
throw new ArgumentOutOfRangeException("不是合法的IP地址!");
}
byte[] IP = new byte[4];
for (int i = 0; i < IP.Length; i++)
{
IP[i] = (byte)(Int32.Parse(ipSp[i]) & 0xFF);
}

IPLocation local = null;
long offset = locateIP(IP);

if (offset != -1)
{
local = getIPLocation(offset);
}

if (local == null)
{
local = new IPLocation();
local.area = unArea;
local.country = unCountry;
}
return local;
}

//取得具體信息
#region 取得具體信息
/**/
///<summary>
///取得具體信息
///</summary>
///<param name="offset"></param>
///<returns></returns>
#endregion
private IPLocation getIPLocation(long offset)
{
ipFile.Position = offset + 4;
//讀取第一個字節(jié)判斷是否是標志字節(jié)
byte one = (byte)ipFile.ReadByte();
if (one == REDIRECT_MODE_1)
{
//第一種模式
//讀取國家偏移
long countryOffset = readLong3();
//轉至偏移處
ipFile.Position = countryOffset;
//再次檢查標志字節(jié)
byte b = (byte)ipFile.ReadByte();
if (b == REDIRECT_MODE_2)
{
loc.country = readString(readLong3());
ipFile.Position = countryOffset + 4;
}
else
loc.country = readString(countryOffset);

//讀取地區(qū)標志
loc.area = readArea(ipFile.Position);

}
else if (one == REDIRECT_MODE_2)
{
//第二種模式
loc.country = readString(readLong3());
loc.area = readArea(offset + 8);
}
else
{
//普通模式
loc.country = readString(--ipFile.Position);
loc.area = readString(ipFile.Position);
}
return loc;
}

//取得地區(qū)信息
#region 取得地區(qū)信息
/**/
///<summary>
///讀取地區(qū)名稱
///</summary>
///<param name="offset"></param>
///<returns></returns>
#endregion
private string readArea(long offset)
{
ipFile.Position = offset;
byte one = (byte)ipFile.ReadByte();
if (one == REDIRECT_MODE_1 || one == REDIRECT_MODE_2)
{
long areaOffset = readLong3(offset + 1);
if (areaOffset == 0)
return unArea;
else
{
return readString(areaOffset);
}
}
else
{
return readString(offset);
}
}

//讀取字符串
#region 讀取字符串
/**/
///<summary>
///讀取字符串
///</summary>
///<param name="offset"></param>
///<returns></returns>
#endregion
private string readString(long offset)
{
ipFile.Position = offset;
int i = 0;
for (i = 0, buf[i] = (byte)ipFile.ReadByte(); buf[i] != (byte)(0); buf[++i] = (byte)ipFile.ReadByte()) ;

if (i > 0)
return Encoding.Default.GetString(buf, 0, i);
else
return "";
}

//查找IP地址所在的絕對偏移量
#region 查找IP地址所在的絕對偏移量
/**/
///<summary>
///查找IP地址所在的絕對偏移量
///</summary>
///<param name="ip"></param>
///<returns></returns>
#endregion
private long locateIP(byte[] ip)
{
long m = 0;
int r;

//比較第一個IP項
readIP(ipBegin, b4);
r = compareIP(ip, b4);
if (r == 0)
return ipBegin;
else if (r < 0)
return -1;
//開始二分搜索
for (long i = ipBegin, j = ipEnd; i < j; )
{
m = this.getMiddleOffset(i, j);
readIP(m, b4);
r = compareIP(ip, b4);
if (r > 0)
i = m;
else if (r < 0)
{
if (m == j)
{
j -= IP_RECORD_LENGTH;
m = j;
}
else
{
j = m;
}
}
else
return readLong3(m + 4);
}
m = readLong3(m + 4);
readIP(m, b4);
r = compareIP(ip, b4);
if (r <= 0)
return m;
else
return -1;
}

//讀出4字節(jié)的IP地址
#region 讀出4字節(jié)的IP地址
/**/
///<summary>
///從當前位置讀取四字節(jié),此四字節(jié)是IP地址
///</summary>
///<param name="offset"></param>
///<param name="ip"></param>
#endregion
private void readIP(long offset, byte[] ip)
{
ipFile.Position = offset;
ipFile.Read(ip, 0, ip.Length);
byte tmp = ip[0];
ip[0] = ip[3];
ip[3] = tmp;
tmp = ip[1];
ip[1] = ip[2];
ip[2] = tmp;
}

//比較IP地址是否相同
#region 比較IP地址是否相同
/**/
///<summary>
///比較IP地址是否相同
///</summary>
///<param name="ip"></param>
///<param name="beginIP"></param>
///<returns>0:相等,1:ip大于beginIP,-1:小于</returns>
#endregion
private int compareIP(byte[] ip, byte[] beginIP)
{
for (int i = 0; i < 4; i++)
{
int r = compareByte(ip[i], beginIP[i]);
if (r != 0)
return r;
}
return 0;
}

//比較兩個字節(jié)是否相等
#region 比較兩個字節(jié)是否相等
/**/
///<summary>
///比較兩個字節(jié)是否相等
///</summary>
///<param name="bsrc"></param>
///<param name="bdst"></param>
///<returns></returns>
#endregion
private int compareByte(byte bsrc, byte bdst)
{
if ((bsrc & 0xFF) > (bdst & 0xFF))
return 1;
else if ((bsrc ^ bdst) == 0)
return 0;
else
return -1;
}

//根據(jù)當前位置讀取4字節(jié)
#region 根據(jù)當前位置讀取4字節(jié)
/**/
///<summary>
///從當前位置讀取4字節(jié),轉換為長整型
///</summary>
///<param name="offset"></param>
///<returns></returns>
#endregion
private long readLong4(long offset)
{
long ret = 0;
ipFile.Position = offset;
ret |= (ipFile.ReadByte() & 0xFF);
ret |= ((ipFile.ReadByte() << 8) & 0xFF00);
ret |= ((ipFile.ReadByte() << 16) & 0xFF0000);
ret |= ((ipFile.ReadByte() << 24) & 0xFF000000);
return ret;
}

//根據(jù)當前位置,讀取3字節(jié)
#region 根據(jù)當前位置,讀取3字節(jié)
/**/
///<summary>
///根據(jù)當前位置,讀取3字節(jié)
///</summary>
///<param name="offset"></param>
///<returns></returns>
#endregion
private long readLong3(long offset)
{
long ret = 0;
ipFile.Position = offset;
ret |= (ipFile.ReadByte() & 0xFF);
ret |= ((ipFile.ReadByte() << 8) & 0xFF00);
ret |= ((ipFile.ReadByte() << 16) & 0xFF0000);
return ret;
}

//從當前位置讀取3字節(jié)
#region 從當前位置讀取3字節(jié)
/**/
///<summary>
///從當前位置讀取3字節(jié)
///</summary>
///<returns></returns>
#endregion
private long readLong3()
{
long ret = 0;
ret |= (ipFile.ReadByte() & 0xFF);
ret |= ((ipFile.ReadByte() << 8) & 0xFF00);
ret |= ((ipFile.ReadByte() << 16) & 0xFF0000);
return ret;
}

//取得begin和end之間的偏移量
#region 取得begin和end之間的偏移量
/**/
///<summary>
///取得begin和end中間的偏移
///</summary>
///<param name="begin"></param>
///<param name="end"></param>
///<returns></returns>
#endregion
private long getMiddleOffset(long begin, long end)
{
long records = (end - begin) / IP_RECORD_LENGTH;
records >>= 1;
if (records == 0)
records = 1;
return begin + records * IP_RECORD_LENGTH;
}
} //class QQWry

public class IPLocation
{
public String country;
public String area;

public IPLocation()
{
country = area = "";
}

public IPLocation getCopy()
{
IPLocation ret = new IPLocation();
ret.country = country;
ret.area = area;
return ret;
}
}
}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
久久精品免费一区二区| 午夜一区二区三区视频| 欧美人妻精品一区二区免费看| wwwwww.色| 300部国产真实乱| 国产精品一区在线播放| 国产精品欧美亚洲777777| 俺去了亚洲欧美日韩| 精品国产乱码久久久久久牛牛 | 日本一区二区精品| 日本日本19xxxⅹhd乱影响| 国产清纯白嫩初高中在线观看性色| 日本不卡在线观看| 精品国产污网站| 午夜电影一区二区三区| 18欧美乱大交hd1984| 极品销魂美女一区二区三区| 日本久久一级片| 国产欧美日韩综合精品一区二区三区| 不卡视频免费播放| 欧美一区二区福利| 国产成人成网站在线播放青青| 欧美一区二区大胆人体摄影专业网站| 久久精品中文字幕一区| 亚洲精品中文字幕av| 日韩视频123| 日本一区视频在线观看| 亚洲成人免费在线观看| 亚洲国产高清不卡| 国产日韩欧美高清| 国产欧美日韩激情| 国产精品国产三级国产| 亚洲国产精品精华液ab| 国产日产精品一区| 国产日产亚洲精品系列| 亚洲国产高清aⅴ视频| 久久尤物电影视频在线观看| 久久综合色鬼综合色| 久久久久亚洲蜜桃| 久久久久se| 秋霞午夜鲁丝一区二区老狼| 亚洲av成人无码久久精品老人| 亚洲av无码一区二区三区dv | 国产原创剧情av| 久久人妻少妇嫩草av无码专区 | 国产男女免费视频| 欧美日韩在线视频一区二区三区| 女人天堂av手机在线| 日韩在线三区| 久久天堂电影网| 欧美大片第1页| 96精品视频在线| 国产精品午夜一区二区欲梦| 亚洲最大福利视频网站| 蜜桃视频在线观看91| aaa免费在线观看| 国产免费一区二区三区视频| 亚欧美一区二区三区| 五月婷婷综合在线观看| 日本黄色小说视频| 无码人妻精品一区二区50| av一区二区三| 国模少妇一区二区三区| 国产精品午夜久久| 日本中文字幕第一页| 亚洲一区在线视频观看| 久久精品人人做人人综合| 一级特黄大欧美久久久| 91麻豆精品国产综合久久久久久 | 亚洲免费av网站| 91久久奴性调教| 一区国产精品视频| 国产精品久久久久福利| 中文字幕一区二区不卡| 最近2019中文免费高清视频观看www99 | www.国产在线播放| 色一情一区二区三区| 国产调教在线观看| 国产又大又黑又粗| 成人午夜免费视频| 疯狂蹂躏欧美一区二区精品| 精品毛片乱码1区2区3区 | 国产精品1区2区在线观看| 亚洲自拍偷拍色片视频| 黄色一级大片免费| 制服丝袜av在线| 日韩免费视频一区二区视频在线观看| 美女视频一区免费观看| 91丨porny丨在线中文| 美国毛片一区二区三区| 亚洲精品国产高清久久伦理二区| 精品成人一区二区三区| 日韩美女激情视频| 成人毛片100部免费看| 中文字幕一区二区三区人妻不卡| 九九热精品视频在线| 国产精品亚洲人在线观看| 日韩欧美999| 日韩午夜在线视频| 日本一区视频在线| xxxxx在线观看| 蜜臀久久久久久999| 成 人 黄 色 片 在线播放| 中文字幕不卡三区| 久久久午夜精品理论片中文字幕| 91精品国产综合久久婷婷香蕉 | 黄色a级片在线观看| 天天干天天色天天| 亚洲va欧美va天堂v国产综合| www.久久久久久.com| 无遮挡亚洲一区| 91狠狠综合久久久久久| 蜜臀精品一区二区三区在线观看| 色综合久久天天| 日本欧美爱爱爱| 久久久999视频| 日韩一区二区视频在线| 国产清纯美女被跳蛋高潮一区二区久久w | 日韩在线观看一区二区| 岛国av午夜精品| 国产99久久精品一区二区 夜夜躁日日躁 | 久久看片网站| 欧美性一级生活| 亚洲japanese制服美女| 国产老头和老头xxxx×| 国产成人手机在线| 日本高清不卡在线观看| 国产噜噜噜噜噜久久久久久久久| 一道本在线免费视频| 国产女人18毛片水真多| 亚洲欧美久久久久| 在线电影国产精品| 国产亚洲精品美女久久久m| 中文在线观看免费视频| 人人精品人人爱| 自拍日韩亚洲一区在线| 国产成人亚洲综合91精品| 日韩视频在线视频| **亚洲第一综合导航网站| 九九九九精品九九九九| 国产wwwwxxxx| 亚洲精品一区二三区| 日韩美女久久久| 日韩免费高清在线观看| 午夜福利123| 日本vs亚洲vs韩国一区三区| 精品福利一区二区三区| 91成人免费观看| 亚洲成人a**址| 美女三级黄色片| 精产国品一区二区| 这里只有精品国产| 日韩一区精品字幕| 亚洲国产精彩中文乱码av在线播放| 色偷偷噜噜噜亚洲男人| 97国产精东麻豆人妻电影| 精品人妻一区二区三区日产乱码 | 五月婷婷六月激情| 日本高清视频一区二区| 欧美在线观看你懂的| 久久人妻无码一区二区| 人妻激情偷乱视频一区二区三区| 黄一区二区三区| 久久影院在线观看| 黄色一级片免费播放| 国产成人av影院| 久久久久久高潮国产精品视| 电影午夜精品一区二区三区| 欧美毛片在线观看| 亚洲成人久久影院| 国产精品swag| 中文字幕永久在线观看| 欧美一级欧美三级在线观看| 大荫蒂性生交片| 日韩**一区毛片| 欧美精品日韩三级| 30一40一50老女人毛片| 亚洲欧洲色图综合| 久久久久久国产精品免费免费| 国产一级免费视频| 国产精品视频第一区| 国产精品亚洲欧美导航| 国产一级特黄毛片| 日韩欧美在线一区| 最近免费观看高清韩国日本大全| 天堂在线视频观看| 日韩中文字幕在线视频| 日韩片在线观看| 亚洲美女免费在线| 色狠狠久久av五月综合| 天天操天天干天天爽| 伊人成人开心激情综合网| 日本人妻一区二区三区| 亚洲欧美激情在线| 国产91av视频在线观看| 超碰手机在线观看| 91精品在线观看入口| 亚洲色图 在线视频| 99久久综合狠狠综合久久| 成人免费黄色网| 午夜一区二区三区四区| 亚洲午夜激情免费视频| 人人妻人人澡人人爽人人精品 | 天天av天天翘天天综合网| 日韩偷拍一区二区| 丝袜美腿亚洲综合| 国产精品成熟老女人| 在线观看一区二区三区视频| 中文字幕第一区| 清纯唯美一区二区三区| 久久久久久色| 日韩av片永久免费网站| 懂色av蜜臀av粉嫩av喷吹| 亚洲视频欧洲视频| 激情高潮到大叫狂喷水| 日韩免费福利电影在线观看| 亚洲精品鲁一鲁一区二区三区 | 免费成人黄色大片| 一区二区激情视频| 亚洲人成色77777| 综合中文字幕亚洲| 欧美三级一级片| www.色呦呦| 国产成人精品电影久久久| 国产精品xxxxxx| 欧美国产日韩视频| 中文字幕永久在线| 羞羞色国产精品| wwwwww国产| 欧美成年人视频| 精品人妻一区二区色欲产成人| 日韩在线观看你懂的| 日本亚洲欧美在线| 久久国产精品亚洲| jizz国产在线| 日韩av片免费在线观看| 欧美一级淫片aaaaaa| 91精品久久久久| 日本一二三区在线观看| 日韩精品视频在线| 国产午夜福利片| 欧美福利在线观看| 一区二区不卡视频在线观看| 91av视频在线播放| 免费av网站观看| 国产视频不卡| 成人av网址在线| 亚洲 自拍 另类小说综合图区| 亚洲欧美国产三级| 91av免费观看| 亚洲精品第一国产综合精品| 中文字幕第28页| 97在线精品视频| 午夜国产在线观看| 色午夜这里只有精品| 久久午夜鲁丝片| 国产精品视频在线播放| 精品一区二区三区欧美| 樱空桃在线播放| 福利微拍一区二区| 制服丨自拍丨欧美丨动漫丨| 欧美激情视频免费观看| 天堂在线观看av| 日韩视频在线播放| 亚洲成人动漫精品| 337人体粉嫩噜噜噜| 欧美激情精品久久久久久变态| 人妻精品一区二区三区| 亚洲精品视频一二三| 日本不卡在线视频| 午夜探花在线观看| 色婷婷亚洲一区二区三区| 色婷婷粉嫩av| 日本三级韩国三级久久| 精品亚洲porn| 欧美 日韩 国产 高清| 欧美亚洲国产一区二区三区| 日本激情视频一区二区三区| 91av在线看| 国产iv一区二区三区| 成人在线观看黄| 亚洲黄色有码视频| 中文字幕乱码一区二区| 精品不卡在线| 午夜国产不卡在线观看视频| 天天鲁一鲁摸一摸爽一爽| 7777精品伊人久久久大香线蕉的 | 欧美丰满少妇xxxx| 看片的网站亚洲| www.日日操| 亚洲人成网站在线播| 超碰免费在线97| 少妇久久久久久被弄到高潮| 成人午夜电影久久影院| 亚洲自拍第三页| 久久综合久久八八| 国产精品888| 国产农村妇女精品久久| 久久精品国产免费观看| 激情久久五月天| 一区二区三区四区毛片| 久久久www成人免费精品张筱雨| 精品在线播放免费| 日韩精品xxx| 97在线观看视频| 国产欧美日韩在线| 人妻无码视频一区二区三区 | 亚洲一区三区视频在线观看| 欧美视频在线观看一区| 一区二区视频网| 四虎永久免费网站| 精品视频在线播放| 欧美bbbbb| 91热视频在线观看| 69久久夜色精品国产69乱青草| 久久久久久久一区| 99久久久免费精品| 免费成人在线观看av| 99国产精品一区| 日批视频免费看| 国产噜噜噜噜噜久久久久久久久| 亚洲欧美日韩国产综合在线 | 久久69精品久久久久久国产越南| 国产精品一区二区果冻传媒| 久久人妻少妇嫩草av无码专区| 国产热re99久久6国产精品| 偷拍与自拍一区| 在线观看黄色网| 亚洲色成人一区二区三区小说| 少妇高潮久久77777| 久久久亚洲精品一区二区三区| 国产av人人夜夜澡人人爽麻豆| 日韩国产激情在线| 黑人巨大精品欧美一区| 国产三级av在线播放| 精品在线观看一区二区| 精品久久久久久亚洲综合网| 国产一区二区三区免费看 | 亚洲精品99久久久久| 国产成人免费在线观看不卡| 亚洲天堂精品一区| 亚洲午夜在线观看| 亚洲人精选亚洲人成在线| 久久精品视频一区| 精品人妻二区中文字幕| 91精品视频一区| 欧美一区欧美二区| 懂色av中文一区二区三区| 情侣偷拍对白清晰饥渴难耐| 视频一区视频二区视频三区高| 亚洲少妇激情视频| 中文字幕一区二区三区视频| 久久久久久久久久成人| mm131亚洲精品| 91网免费观看| 精品视频一区在线视频| 久久久综合视频| 伊人网av在线| 中文字幕人妻一区二区三区| 美女精品视频一区| 亚洲一区二区中文在线| 美女精品一区| 中国a一片一级一片| 亚洲综合欧美激情| 51国偷自产一区二区三区| 日韩av在线最新| 欧美激情在线一区二区三区| 99在线小视频| 免费黄在线观看| www.国产在线视频| 91精品久久久久久久久青青| 人妻夜夜爽天天爽| 久久精品欧美一区二区| 中文字幕无码不卡免费视频| 欧美国产日韩在线播放| 欧美一级免费在线观看| 在线精品高清中文字幕| 欧美成人一区二区三区高清| 精品无码一区二区三区爱欲| 国产欧美久久一区二区| 亚洲开心激情网| 狠狠色香婷婷久久亚洲精品| 粉嫩aⅴ一区二区三区四区| 中文在线观看av| 免费黄色av网址| 视频一区二区在线观看| 一区二区日韩av| 黑人巨大精品欧美一区| 欧美精品韩国精品| 亚洲欧美日韩精品在线| 久久精品人人爽| 欧美高清dvd| 1000部国产精品成人观看| 日本色综合中文字幕| 国产一级淫片a视频免费观看| 国产精品福利导航| 国产成人精品无码播放| 一本一道久久a久久综合精品| 国产中文字幕亚洲| 欧美高跟鞋交xxxxhd| 国产婷婷97碰碰久久人人蜜臀| 欧美在线免费观看视频| 亚洲三级小视频| 99re亚洲国产精品| 免费av网站大全久久| 91 中文字幕| 欧美一二三区视频| 秋霞欧美一区二区三区视频免费| 国产精品欧美性爱| a在线观看免费视频|