首页
影视
壁纸
留言
关于
今日热榜
推荐
音乐解锁
听歌
阅读器
听歌2
小乞丐
摸鱼
Search
1
Navicat Premium for Mac 中文破解版 (强大的数据库管理工具)
9,647 阅读
2
植物大战僵尸中文版 for Mac (兼容 M1系统) 中文版
5,774 阅读
3
CleanMyMac X 4.15.2 中文破解版 (Mac优化清理工具)
3,303 阅读
4
PDF Expert 中文破解版 (好用的PDF编辑器)
3,050 阅读
5
Parallels Desktop 17 中文版 (PD虚拟机无限试用版本)
2,824 阅读
生活杂记
macOS
编程技术
奇技淫巧
音乐
视频
δ
Search
标签搜索
python
漫画
php
mac
redis
mysql
mac 软件
macOS
音乐
极客爱情
数据库
游戏
吊打面试官
2.0
面试
罗小黑
linux
纯音乐
使用教程
B站
Kain
累计撰写
210
篇文章
累计收到
26
条评论
首页
栏目
生活杂记
macOS
编程技术
奇技淫巧
音乐
视频
δ
页面
影视
壁纸
留言
关于
今日热榜
推荐
音乐解锁
听歌
阅读器
听歌2
小乞丐
摸鱼
搜索到
13
篇与
的结果
2020-07-02
敏感词高效检测从浅到深
1.前言最近给公司开发商品评论系统,需求要对评论进行脱敏处理,因为之前没深入接触过,有些想当然的怎么简单怎么来,刚开始想用foreach循环匹配,但是深入想一想,想不到这里的水真深。先说说思想,我们一般人能够是通过数据库去匹配文本内容、如果敏感词库数据量大,就会出现典型的数据多匹配数据少,这样即增加开销、浪费资源,又可能增加了页面的响应时间;而符合生产环境的做法是将文本内容分词然后匹配数据库敏感词,这样少量的循环就能实现我们需要的效果,如下图所示。可以看到我们传统思路是由数据库匹配文本,典型的多匹配少;所以思路逆转,少匹配多,采用文本分词手段,将需要的词匹配数据库,总的来说,当前方案一共讨论出四种。方案1:PHP函数优点:开发快缺点:数据大效率低方案2:正则匹配优点:开发快,匹配度高缺点:数据大效率低方案3:全文搜索OR分词优点:效率高缺点:开发较复杂方案4:API优点:无需开发,直接调用缺点:可能需要付费、无法自定义敏感词库本章代码分享:https://github.com/mtdgclub/sensitiveWord2.方案实战2.1创建敏感词存储数据库CREATE TABLE `t_sensitive_word` ( `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `word` varchar(20) NOT NULL COMMENT '敏感字', `reason` varchar(20) DEFAULT NULL COMMENT '过滤原因', `is_del` tinyint(1) DEFAULT '0' COMMENT '是否删除 0不删除 1删除', `create_time` int(11) DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='敏感词库';2.2方案1:PHP函数代码实现如下:<?php /** * PHP函数,处理敏感词接口 * 作用:将敏感词变成*号,并返回处理后的文本 */ public function dealByFuncAction() { $word = $this->$_POST['appraise_msg']; if (!empty($word)) { //将敏感库初始静态化 if (empty(self::$save_words_array)) { //从数据库获得敏感词库 $m_sensitive_word = Helper::load('sensitive_word'); $sensitiveWordArray = $m_sensitive_word->Field('word')->Select(); //处理数组,组装 $dealArray = []; foreach ($sensitiveWordArray as $k => $v) { $dealArray[] = $v['word']; } self::$save_words_array = $dealArray; } //给敏感词打码 $badWords = array_combine(self::$save_words_array, array_fill(0, count(self::$save_words_array), '*')); $res = strtr($word, $badWords); $data = ['code' => 1, 'msg' => '处理成功', 'data' => $res]; } else { $data = ['code' => 0, 'msg' => '参数丢失']; } Helper::response($data); }2.3方案2:正则匹配<?php /** * 正则匹配,处理敏感词接口 * 作用:检测提示敏感词 */ public function checkByRegularAction() { $word = $this->$_POST['appraise_msg']; if (!empty($word)) { //去掉文本多余字符 $flag_arr = array('•', '?', '!', '¥', '(', ')', ':', '‘', '’', '“', '”', '《', '》', ',', '…', '。', '、', 'nbsp', '】', '【', '~'); $content_filter = preg_replace('/\s/', '', preg_replace("/[[:punct:]]/", '', strip_tags(html_entity_decode(str_replace($flag_arr, '', $word), ENT_QUOTES, 'UTF-8')))); //将敏感库初始静态化 if (empty(self::$save_words_array)) { //从数据库获得敏感词库 $m_sensitive_word = Helper::load('sensitive_word'); $sensitiveWordArray = $m_sensitive_word->Field('word')->Select(); //处理数组,组装 $dealArray = []; foreach ($sensitiveWordArray as $k => $v) { $dealArray[] = $v['word']; } self::$save_words_array = $dealArray; } //正则匹配 $blacklist = "/" . implode("|", self::$save_words_array) . "/i"; self::$save_words_string = $blacklist; //判断 if (preg_match(self::$save_words_string, $content_filter, $matches)) { $data = ['code' => 0, 'msg' => '有敏感词', 'data' => $matches[0]]; } else { $data = ['code' => 1, 'msg' => '没有敏感词']; } } else { $data = ['code' => 0, 'msg' => '参数丢失']; } Helper::response($data); }另外还有正则匹配将敏感词变成*号并返回处理文本的函数 dealByRegular() ,详见 Sensitive.php 文件2.4方案3:全文搜索OR分词关于中文分词引擎,现在市面上提供多种方案选择,比如:SCWS、Sphinx、PHPAnalysis等等;更有结合 scws(分词引擎) + xapian(搜索引擎) 构建的开源全文搜索引擎 xunsearch、高伸缩的开源全文搜索和分析引擎Elasticsearch 等成熟的全文搜索引擎插件。更深入的有检测算法->DFA算法(全名:Deterministic Finite Automaton)即有穷自动机。其特征为:有一个有限状态集合和一些从一个状态通向另一个状态的边,每条边上标记有一个符号,其中一个状态是初态,某些状态是终态。但不同于不确定的有限自动机,DFA中不会有从同一状态出发的两条边标志有相同的符号。下面举两个案例:2.4.1案例一:使用PHPAnalysis提取中文分词进行匹配下载地址:https://github.com/mtdgclub/PHPAnalysis核心代码如下:<?php /** * Notes:返回文本的所有分词结果(一维数组) * @param string $content * @return array|string */ public static function getAllParticiple($content = ""){ if (empty ( $content )) { return ''; } require_once 'phpanalysis.class.php'; $pa = new \PhpAnalysis ( 'utf-8', 'utf-8', false ); $pa->SetSource($content); $pa->resultType=2; $pa->differMax=true; $pa->StartAnalysis(); $arr=$pa->GetFinallyIndex(); return $arr; }控制器中引用如下:<?php //1.引入PHPAnalysis分词引擎,提取分词数组 $Analysis = new WordAnalysis(); $result = $Analysis->getAllParticiple($word);2.4.2案例二:使用Elasticsearch全文搜索检测敏感词使用 composer 拉取 Elasticsearch{ "require": { "elasticsearch/elasticsearch" : "~5.0" }, "repositories": { "packagist": { "type": "composer", "url": "https://packagist.phpcomposer.com" } } }暂时放放,功力不足,看的吃力,可参考如下文档:https://www.cnblogs.com/mzhaox/p/11210025.htmlhttps://www.cnblogs.com/subendong/p/7308647.html2.5方案4:API这里以阿里云提供的敏感词API为例(点击处理跳转到API)<?php /** * 阿里云api * @param $content * @return array|mixed|string */ private function aliyunApi($content) { $host = "http://monitoring.market.alicloudapi.com"; $path = "/neirongjiance"; $method = "POST"; $appcode = "150b1369d73e4aa3b3f2b22ed6cceeb4"; $headers = array(); array_push($headers, "Authorization:APPCODE " . $appcode); //根据API的要求,定义相对应的Content-Type array_push($headers, "Content-Type" . ":" . "application/x-www-form-urlencoded; charset=UTF-8"); $querys = ""; $bodys = "in={$content}"; $url = $host . $path; $curl = curl_init();//初始化curl curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($curl, CURLOPT_URL, $url);//抓取指定网页 curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_FAILONERROR, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//要求结果为字符串且输出到屏幕上 curl_setopt($curl, CURLOPT_HEADER, true); if (1 == strpos("$" . $host, "https://")) { curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); } curl_setopt($curl, CURLOPT_POSTFIELDS, $bodys); $result = curl_exec($curl); $code = curl_getinfo($curl,CURLINFO_HTTP_CODE);//取得响应码 $data = ''; if($code == 200){ $data = strstr($result, '{'); $data = json_decode($data); } curl_close($curl); $data = ['code' => 1, 'msg' => '敏感词API测试', 'data' => $data]; return $data; } }3.总结通过开发敏感词校测功能,我明白不要小看每个功能,看似简单的东西,其实一点也不简单,每个小功能都能够延伸一定的高度,拿到需求先多想、多思考,把能够想到实现方案列出来,然后让拍板人去选择哪种方案,但是呢,空闲时间也要对其他不采用的方案进行了解和学习,要做到以点盖全,而不是点就是点,加油~
2020年07月02日
130 阅读
0 评论
0 点赞
2020-07-01
网易云音乐多账号全自动升级,彻底解放双手
引言之前有大佬做了一个windows的界面软件可以刷听歌数量来达到快速升级的目的,用起来挺爽的,即使是每天只需要打开软件登陆打卡就行,但总会忘记,为了达到全自动的目的,@ZainCheung 大大动手做了一个python脚本,可以放在服务器上运行,从此不用再去管它,每天它都会自动去打卡听完300首歌,并且可以多账号使用(理论上可以达到几百个),每天会向微信发送消息汇报任务进度。一、总体介绍这个项目可以做到的功能有:每天自动登陆听完300首歌每天自动向你的微信推送听歌任务进度这个项目分为Python客户端和API接口(服务器),一共两个项目,各有三种部署方法。Python项目的部署最简单的是云函数法,API项目的部署最简单的是直接复制项目法自己搭建API和申请Server酱并不是并须的,没有的话项目也可以运作,只是开发者觉得自己搭建API比较安全,用别人的API别人悄悄加后门你都不知道,当然开发者的API已经公开并且所有代码都开源了,肯定是没有后门的,大家可以拿去用。至于Server酱是为了让你每天知道进度以及项目有没有出问题,也不是必须要加的。所以你想快速使用的话,可以直接看部署Python项目的云函数法和后面的部分,部署API项目可以不看。当你成功运作项目后如果想学习自己搭建API接口再回来看API这一部分。无论采取哪一种方式部署,都要看配置账号这一部分,很简单却也很重要!!!二、部署Python项目的三种方法Python项目地址:https://github.com/ZainCheung/netease-cloud① 云函数全民升级时代来了!项目支持了云函数!!!什么是云函数?就是可以让你没有服务器、本地电脑不用下载Python也可以使用这个项目,而且还是白嫖!既解决了很多人部署的麻烦,也给了那些被劝退的朋友回来的勇气,十分钟便可以全部弄完。1. 进入云函数这里拿腾讯云的云函数做个案例,没有的可以免费开通一下,地址:https://console.cloud.tencent.com/scf/list-create?rid=1&ns=default2. 新建函数函数名随意,运行环境选Python 3.6,创建空白函数,然后下一步3. 上传代码确保环境为python 3.6,执行方法改为:index.main,提交方式一定要选本地文件夹,然后从GitHub项目克隆Zip压缩包,解压成文件夹,然后点击这个上传把文件夹上传进来,完了后点击下面的高级设置。4. 高级设置内存用不了太大,64MB就够了,超时时间改为最大的900秒,然后点击最下面的完成。5. 配置账号自己改下init.config里的账号密码以及Server酱密匙,用到多账号的也要配置account.json,做完后点击保存并测试。如果你的配置没有错,稍等几分钟便可以看到结果,在此期间不要刷新页面。结果会在自行日志里。6. 设置定时点击左边的触发管理,然后新建触发器,触发周期为自定义,表达式就是每天的什么时候做任务,我选择的早上8点30分,可以自行修改,填好后点击提交即可,到此你的每日听歌项目便部署完成,感谢使用!!② 本地使用本地部署需要电脑下载并安装配置好Python1. 下载项目克隆项目到本地git clone https://github.com/ZainCheung/netease-cloud.git或者fork本项目到你的仓库进行克隆又或者在项目仓库直接下载ZIP压缩包,这些都是可以的2. 安装依赖需要安装的依赖目前只有一个request,如果运行报错缺少什么模块就给什么模块加进requirements.txt中pip install -r requirements.txt3. 配置账号见后文4. 启动程序程序需要python3的运行环境,如果没有请自行下载安装配置,,启动程序前一定要先配置账号,然后再启动程序python main.py③ 服务器部署推荐使用宝塔面板,在宝塔应用商店里面有一个Python项目管理器,下载安装,并选择3.0以上版本,推荐3.7.2版本.1. 下载安装Python项目管理器2. 新建项目这里的netease-cloud就是这个项目的文件夹,我给放在了/www/wwwroot/路径下了,可见我这里下载安装的是3.7.2版本的python框架选择Python,启动方式也为Python,启动文件选择main.py端口不用填,勾选安装模块依赖,是否要开机启动自己随意咯,然后确定。3. 确定运行状态这时候项目就开始在运行了,就可以去项目在文件夹的路径,找到run.log即可查看运行日志部署前也要记得先配置,然后再部署三、部署API接口的三种方法建议新手使用自动托管方式,可以完全不需要编程基础即可搭建api接口,推荐使用网站:https://glitch.com/这个网站是国外的,名气也很大,在上面托管网站的有几百万,免费使用,缺点就是速度没有国内的服务器快,还有就是如果没有访问了,一定时间后会进入休眠,等待下一次请求到来后需要等待几秒的解冻时间。不过这些对这个项目并没有什么影响,所以可以放心部署。API项目地址:https://github.com/ZainCheung/netease-cloud-api下面三种方法,第一种第二种最简单但速度慢,而且需要你有网站账号,第三种访问速度快但需要你有服务器,大家自己取舍,但基本上有服务器了都想自己搭建吧,大家随意① fork项目并从GitHub导入fork这个API项目到你的仓库打开网站注册并登陆,新建项目,选择从GitHub导入,地址为本项目的git地址修改你的glitch项目名,例如:netease-test那么你的接口名为“项目名.glitch.com”:https://netease-test.glitch.me/访问你的接口看到欢迎页面即部署成功使用这种方式部署网站接口,0成本且快速可用,且不用担心环境部署运维等问题,当然如果有条件用自己的服务器搭建也是可以的。1. fork项目跳过 Star2. 导入项目填入你的的git地址,地址在你的Github项目的clone按钮里,要用https改自己项目名② 直接复制项目或者可以直接复制一份这个API项目成为你的项目,进入开发者的api服务器: https://glitch.com/edit/#!/netease-cloud-api 选择右上角的 Remix to Exit,即可成为你自己的项目,你便可以对代码进行修改,自定义你的域名③ 服务器部署部署到服务器,对于新手还是比较建议安装宝塔面板,然后就可以在浏览器中进行界面化操作,免得有的人不会Linux的命令行。1. 下载PHP2. 添加网站填入你提前在你的域名运营商解析的域名,可以是子域名比如,api.xxxxxx.com,写个网站备注,然后根目录选择到下载的项目路径,FTP不创建,数据库不创建默认utf-8就行,程序类型PHP,版本选择下载的版本,提交即可运行你的网站。运行网站这里演示域名为test.com,然后在浏览器里输入你的网站地址,看到欢迎页面即为部署成功四、配置账号为了保护账号信息,所有的账号密匙都打上了*号,使用时请换成自己的账号打开init.config文件,进行配置# setting.config(UTF-8)第一句注释是为了声明编码格式,请不要删除该行注释1. 账号[token] # 网易云音乐账号(手机号/网易邮箱) account = 150******** # 密码,明文/MD5,建议自己去MD5在线加密网站给密码加密,然后填到下面 # 明文例如:123456abcd # MD5例如:efa224f8de55cb668cd01edbccdfc8a9 password = bfa834f7de58cb650ca01edb********token区域下存放个人账号信息,account存放网易云账号,password存放密码注意,这里密码填写类型与后面的md5开关相关联,具体见后面介绍2. 设置[setting] # 开关的选项只有 True 和 False # 打卡网站的网址,如果失效请提issue:https://github.com/ZainCheung/netease-cloud-api/issues/new api = https://netease-cloud-api.glitch.me/api是指提供接口的服务器地址,这里提供一个Demo,源码也已经全部开源,如有对项目存在疑问欢迎查看源码,项目地址:ZainCheung/netease-cloud-api另外想快速拥有一个一模一样的api服务并且使用自己定义的域名,那么可以按照上面项目的教程自己快速搭建2-1. MD5# 密码是否需要MD5加密,如果是明文密码一定要打开 # true 需要, 则直接将你的密码(明文)填入password,程序会替你进行加密 # false 不需要, 那就自己计算出密码的MD5,然后填入上面的password内 md5Switch = falsemd5开关,如果自己不会加密md5,那么将这个开关置为true,并且将你的密码(明文)填入password,程序会为你加密。如果已经知道密码的md5,则将这个开关置为false,将md5填入上面的password内自己制作MD5时一定要是32位小写!!!2-2. 多账号# 是否开启多账号功能,如果打开将会忽视配置文件里的账号而从account.json中寻找账号信息 # 如果选择使用多账号,请配置好account里的账号和密码,即account和password,而sckey不是必需的,如果为空则不会进行微信推送 # 介于账号安全着想,account.json中的密码必须填写md5加密过的,请不要向他人透露自己的明文密码 peopleSwitch = false这个开关是为那些拥有多账号或者准备带朋友一起使用的朋友准备的,正如注释所说,如果你有多个账号,都想使用这个服务,那么可以打开peopleSwitch置为true,那么配置文件里的账号就会被程序忽略,直接读取account.json中的账号信息,关于account.json的配置在后面。2-3. 微信提醒# Server酱的密匙,不需要推送就留空,密匙的免费申请参考:http://sc.ftqq.com/ sckey = SCU97783T70c13167b4daa422f4d419a765eb4ebb5ebc9********Server酱,是一个可以向你的微信推送消息的服务,并且消息内容完全自定义,使用之前只需要前往官网,使用GitHub登陆,扫码绑定微信,便可以获得密匙,从此免费使用Server酱3. 配置多账号第一次打开account.json,内容会是这样[ { "account": "ZainCheung@163.com", "password": "10ca5e4c316f81c5d9b56702********", "sckey": "SCU97783T70c13167b4daa422f4d419a765eb4ebb5ebc9********" }, { "account": "150********", "password": "bfa834f7de58cb650ca01edb********", "sckey": "SCU97783T70c13167b4daa422f4d419a765eb4ebb5ebc9********" }, { "account": "132********", "password": "f391235b15781c95384cd5bb********", "sckey": "SCU97783T70c13167b4daa422f4d419a765eb4ebb5ebc9********" } ]可见里面是一个数组文件,成员为账号对象,对象有三个属性,分别是账号、密码、Server酱密匙。不同的账号对应不同的密匙,在做完这个账号的任务后会给这个密匙绑定的微信发送消息提醒,如果留空则不提醒,留空也请注意语法,记得加双引号,列举一个正确的案例[ { "account": "ZainCheung@163.com", "password": "10ca5e4c316f81c5d9b56702********", "sckey": "" }, ]可见这里的sckey为空,那么完成任务后便不会发送消息提醒,如果不确定是否成功可以查看日志五、效果演示使用前可以看到是9027首使用后是9327首,刚好涨了300首微信提醒微信提醒依赖于Server酱,这是个很奈斯的工具,个人开发的一个项目,对所有人保持免费开放,需要使用GitHub登陆,然后绑定微信,拿到你的密匙,填入到配置文件的sckey中,或者多账号文件account.json中提示的内容也可以自行修改,main.py文件的第143行左右的diyText函数里的content为提示内容,里面可以自定义提示内容,比如你不是考研党就把考研那一行删去,以及每日一句,,等等,如有需要尽情改。看一下效果:六、下载地址Python项目地址:https://github.com/ZainCheung/netease-cloudapi接口项目地址:https://github.com/ZainCheung/netease-cloud-apiapi的Demo演示地址:https://netease-cloud-api.glitch.me/api在线服务器:https://glitch.com/edit/#!/netease-cloud-api七、查看日志只有本地部署和服务器部署才会生成日志文件,而用云函数搭建的不会有这个run.log文件,如需查看日志可以查看云函数内置的日志。日志文件记录了程序运行的状况,程序运行中生成的所有记录都会保存在日志文件中,第一次克隆项目时,不会看到run.log日志文件,而在程序第一次运行时才会生成,下面看一下我在服务器上的日志:八、其他1. Server酱一定要绑定微信才会有效果Server酱的官网地址:http://sc.ftqq.com/2. MD5制作时选择32位小写!!!在线“制作”MD5:https://tool.chinaz.com/tools/md5.aspx比较建议大家使用MD5,因为别人即使知道了你的MD5,也很难还原你的密码,相对而言要安全很多,而原密码在你制作MD5时就被隐藏起来了,只有你一个人知道密码3. 修改main.py如果你的等级比较高,然后使用这个发现每次都没有听满300首,那么你可以修改程序的start函数(165行左右)的打卡次数,将3改大点,比如改到6就可以打卡6次for i in range(1,3):如果你嫌打卡速度慢了,可以修改休眠时间,30秒改为10秒之类的,请自行调试time.sleep(30)4. 可用性可能有人会说,直接使用网页或者电脑程序每天打卡不就好了,干嘛还要脚本。是的,使用网站和程序确实可以做到一样的效果,不过我懒啊,还总是忘事,所以就让它彻底全自动化,可能也有不少人愿意像我这样折腾一番,然后就可以坐享其成一劳永逸,每天坐等微信提醒就行。5. 初衷使用网易云也有挺久了,听的歌也挺多,但总是会听重复的歌,而重复的歌又不算进等级里去,所以还是很想升级的。6. 反馈欢迎到GitHub提Issue或者在吾爱帖子下提问题,遇到程序报错可以截图或者复制报错信息。九、项目结构|-- 项目文件夹 |-- LICENSE |-- README.md |-- account.json |-- init.config |-- main.py |-- requirements.txt |-- run.logLICENSE:开源许可证README.md:项目自述文件account.json:账号存放文件init.config:配置文件main.py:主程序requirements.txt:依赖清单run.log:运行日志十、声明感谢 @ZainCheung 大大,本项目的所有脚本以及软件仅用于个人学习开发测试,所有网易云相关字样版权属于网易公司,勿用于商业及非法用途,如产生法律纠纷请自行个人解决。
2020年07月01日
166 阅读
0 评论
0 点赞
2020-06-28
PHP版抖音短视频解析
看到有人找最新版的抖音短视频解析,就把以前在网上下载的一个源码撸出来看看了,源文件来自https://www.52pojie.cn/thread-1165125-1-1.html ,发现不能用了,于是就修复了一下代码<?php //使用方法 域名/dy.php?url=https://v.douyin.com/TudRFh/ error_reporting( E_ALL&~E_NOTICE ); $url = $_GET['url']; $res = http_get($url); preg_match('/href="(.*?)">Found/', $res, $matches); $temp=str_replace('&', '&', $matches[1]); preg_match('/(?<=video\/).*(?=\/\?region)/', $temp, $matches); $arr = json_decode(http_get('https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids='. $matches[0]), true); preg_match('/href="(.*?)">Found/', http_get(str_replace('playwm', 'play', $arr['item_list'][0]["video"]["play_addr"]["url_list"][0])), $matches); $videoUrl = str_replace('&', '&', $matches[1]); echo $videoUrl; function http_get($url) { $Header=array( "User-Agent:Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"); $con=curl_init((string)$url); curl_setopt($con,CURLOPT_HEADER,False); curl_setopt($con,CURLOPT_SSL_VERIFYPEER,False); curl_setopt($con,CURLOPT_RETURNTRANSFER,true); curl_setopt($con,CURLOPT_HTTPHEADER,$Header); curl_setopt($con,CURLOPT_TIMEOUT,5000); $result = curl_exec($con); return $result; }
2020年06月28日
89 阅读
0 评论
0 点赞
1
2