关于微博:怎样监控微博更新了

从前始终关注某大咖微博,一直点击刷新按钮,刷新微博页面,期待能第一工夫取得微博内容。其实能够用软件帮你盯着,只有博主更新了马上揭示。首先在网站资讯监控工具里,增加须要监控的微博页面,应用“微博监控计划”,设定好微博监控周期和过滤关键词。而后设置微博更新后的揭示形式,能够在电脑屏幕右下角弹窗揭示,声音揭示;也能够应用邮件揭示(可绑定微信qq手机揭示)。收到的揭示内容就是更新的内容。最初,点击开始监控按钮,软件主动关上微博,检测更新内容,如果蕴含指定的关键词,立马记录显示在表格中,同时报警揭示。

June 21, 2022 · 1 min · jiezi

关于微博:微博机器学习平台云上最佳实践

简介: 本文讲述了微博机器学习平台和深度学习平台的业务性能和云上实际,分析了阿里云大数据在微博这两大学习平台的架构建设上所起到的作用。 作者:新浪微博数据计算平台零碎架构师 曹富强 本文讲述了微博机器学习平台和深度学习平台的业务性能和云上实际,分析了阿里云大数据在微博这两大学习平台的架构建设上所起到的作用。 微博介绍微博是2008年上线的,中国头部、风行的社交媒体平台,提供人们在线创作、分享和发现优质内容的服务,微博的大规模机器学习平台可反对千亿级参数、百万QPS调用。目前微博的日活是2.22亿,月活是5.16亿。 微博机器学习平台(WML)劣势微博机器学习平台的特点是样本规模大,百亿级样本,实时性比拟高,是分钟级,而后模型规模是百亿级,模型实时性依据不同场景有小时级、分钟级和秒级。作业的稳定性的话要求是三个9,平台业务多,场景丰盛迭代快。 微博机器学习平台(WML)CTR模型 微博机器学习平台的CTR模型通过数字版本的迭代,从1.0的离线机器学习到3.0的离线和深度,到5.0的在线机器学习、离线机器学习和深度机器学习联合。再到目前咱们是往在线深度学习方向倒退。总体来说通过历史迭代,目前撑持的参数规模达千亿级,服务峰值达百万QPS,模型更新是10分钟量级。 微博机器学习平台(WML)架构 咱们看一下微博机器学习平台的架构,微博机器学习平台为CTR、多媒体等各类机器学习和深度学习算法,提供从样本解决、模型训练、服务部署到模型预估的一站式服务。总体的话是基于在线计算集群,离线计算集群和高性能计算集群。咱们通过资源的WeiBox调度框架和WeiFlow工作流引擎,计算平台的话是WeiLearn框架集成的Hadoop/Spark、Flink/Storm、TensorFlow/Pytorch,提供了诸多丰盛的算法。基于这些算法,训练的模型,咱们入到咱们WeiPS模型库,而后通过WeiServing对外提供在线推理服务。 微博机器学习在阿里云上实际 咱们的阿里云上实际应用了Flink、MaxCompute、Alink、PAI。基于这些服务提供了热门微博、Feed流、绿洲举荐,应用MaxCompute实现在雷同规模下万亿样本百亿特色全量训练,比Hadoop集群晋升10倍。反对从天级到分钟级的实时热门微博、Feed流业务举荐及搜寻样本施行训练、上线,业务举荐成果晋升10%。基于Flink搭建了实时计算平台,集成了作业提交端UI/WeiClient、作业管理、资源管理、日志零碎、监控报警零碎等各链路,作业规模上千。整体来说阿里云建设机器学习有几大劣势:反对大规模解决、算法丰盛、平台成熟运维不便、投入工夫间接聚焦到业务。 微博深度学习平台(WDL)典型业务场景 接下来介绍微博深度学习相干的业务,目前的话在微博的关系流、绿洲、新浪视频举荐、注释举荐流外面都有深度学习的利用。 微博深度学习平台(WDL)架构 基于在线gpu的机器,咱们通过K8s和Yarn治理,而后通过WeiArena和el-submit提交工作。咱们的WeiLearn集成了TensorFlow、Pytorch引擎,而后集成了样本库读取和输入的模型库。而后WeiServing加载了模型库,对外提供两路服务,一个是通过AI服务间接对外提供AI输入能力,另外就是咱们的计算服务WeiStorm,集成了数据流,调用WeiServing RPC服务框架,实时生成多媒体特色,对外提供在线服务推理。 微博深度学习平台(WDL)多媒体特色生成 微博机器学习深度平台多媒体特色的生成,只有两条链路,第一路是离线的训练,离线训练模型通过数据源的解决输入到样本库,而后通过咱们WeiServing分布式训练模型调用,输入到模型库,这一路的话是一键CICD、分布式训练、反对多品种的模型。另一路是在线推理,在线推理的话生产多媒体实时数据流,调用咱们的WeiServingRPC框架,输入多媒体特色,而后利用到业务,这条链路的话,咱们通过对账零碎、case追踪、全链路监控去做服务保障,成功率是99.99%,延时是秒级延时。开发模式是通过UI化、配置化、一键部署。 微博深度学习平台(WDL)基本功能 微博深度学习平台产品性能的话,一个是样本库,而后分布式训练,模型库,在线推理服务和计算服务。样本库的话次要是蕴含样本数据管理和样本分布式存储,对在各节点上零散的样本进行对立治理;分布式训练的话,内置罕用深度学习算法并继续新增成熟的算法,标准样本读取,训练gpu集群的灵便调度和训练模型的对立存储;模型库的话提供分布式系统和本地两种存储形式,为在线推理服务提供模型;在线推理服务,反对Python和C++模型的一键部署,实现模型推理的服务化以及监控、告警等。可封装为HTTP服务,对外间接提供AI的能力,实现AI能力的间接输入;计算服务,基于外部的多媒体散发零碎,接入多媒体数据流,调用在线推理服务,实时生成多媒体特色。 微博深度学习平台(WDL)业务实际 微博深度学习平台业务实际,晚期的话基于单机训练解决大规模数据时训练周期长,迭代慢,影响业务成果。 于是咱们提供了多媒体深度学习服务计划,微博深度学习平台就应运而生,实现了样本存储、离线训练、在线推理及模型存储一体化性能。最终产生的成果和业务价值是:分布式训练极大缩短了训练工夫,为疾速业务迭代提供良好基础;一体化服务让咱们只须要专一于模型算法优化,进步业务效率,整体上为业务赋能和业务承建产生了微小的推动力。原文链接本文为阿里云原创内容,未经容许不得转载。

April 30, 2021 · 1 min · jiezi

关于微博:淘丞相如何制作手淘首页一键直达微博链接教程超全面超详细

一键中转链接制作方法:1.关上淘丞相官网地址: http://sina-t.cn/taochengxiang 2.注册登录后,点击页面banner上的【立刻制作】按钮开始制作 3.找到本人的微博页面,点击右上角复制微博链接 4.在输入框粘贴复制到的微博链接,点击生成 5.复制失去的链接,关上卖家后盾-店铺治理-店铺装修-手淘首页装修-装修页面 6.拖拽左侧的图文类分类下题目模块或者自定义模块 7.在题目输入框输出:“一键中转微博”,链接栏输出方才生成的链接,点击保留

August 2, 2020 · 1 min · jiezi

借助诗词API和微博图床搭建自动发图文微博机器人

在2011年的时候,浙大的一位博士生借助微博的开放平台为他实验室的一台饮水机弄了个微博,名唤@浙大CCNT实验室饮水机,俗称“饮水机娘“。当年这条新闻给自己留下了挺大的印象,也一直对这个微博账号可以自动发微博背后的机理感到十分憧憬。一晃,时间都来到了2019年了~~ 咳咳——在钻研不少技术文章以及对技术派网友的多多请教后,自己终于也捣弄了一个自动发微博的机器人( ̄︶ ̄)↗ 此微博机器人的功能如下:直接模拟登陆新浪微博;自动获取唐诗宋词文本;自动获取文艺主题图片;自动上传图片至微博图床;自动发送内容不同的图文微博;通过定时任务,实现周期性发微博任务。 实际效果图: GitHub仓库:https://github.com/Leslie-Won… 正所谓“前不见古人,后不见来者。念天地之悠悠,独怆然而涕下!“,咳咳——IT技术世界当然不是这样,我们的技术积累都是站在前人的基础上的,换言之,站在巨人的肩膀上。所以,还是先来啰嗦啰嗦当年的饮水机娘。饮水机娘分析 当年果壳网在饮水机娘爆红了的时候,采访了背后的开发者——浙江大学计算机科学与技术的一位陈姓博士生。文章标题是《揭开“饮水机娘”的神秘面纱》。在这篇文章中,阐述发微博原理的段落如下:据陈同学介绍,饮水机本身并没有多加改造,只是饮水机上安装一个摄像头,镜头正对加热指示灯,作为传感器,实时监控加热状态。发送微博的功能通过代码实现,利用了新浪微博开放平台提供的PHP语言软件开发工具包。在代码的设计中,主要有检测模块和反应模块两部分。检测模块处理摄像头的监控数据,捕捉加热指示灯“亮->不亮”与“不亮->亮”两个切换状态,然后调用反应模块及时发送微博。所以在“饮水机娘”自动发送的微博下方,会显示“来自未通过审核应用”。目前,完成这些功能,所需的代码量不足两百行。 现在来分析分析这两段话,把整个流程弄成流程图的话是如下的效果: 从“指示灯”到“视觉算法判断状态”这部分属于计算机视觉实现了,依本人目前的技术视野判断,可以借助openCV来构建。至于发送微博这一部分,则是纯粹的PHP代码实现。由于本文所要讨论的是构建一个发微博的机器人,而微博报文数据的获取可以有很多种方式,因此,openCV就点到为止了。(自己也不是太懂openCV)(。・_・)/~~~ 自己在查阅了不少技术文献后,通过这篇《新浪微博自动(模拟)登陆详解及实现》了解到饮水机娘发送的微博下方会出现“来自未通过审核应用”是由于用了新浪微博开放平台的接口的缘故,而且其会有几个比较致命的限制(调用次数限制和授权期限限制)。网上流传一种直接模拟登陆微博的解决方案,关键点就是利用php的curl功能,这也是本人所要阐述的微博机器人使用的登录原理。 另外,翻了翻饮水机娘最早期发送的微博,报告饮水机水沸腾了的微博报文是这样子的—— 后来变成了这样子—— 而对应“亮->不亮”状态的微博报文最初是这样子的—— 不过,后来关注度上去之后,就很难判断饮水机娘发送的微博是不是根据饮水机状态自动发出去了的了,但是也不影响本文后续的叙述。OK,溯源的部分就到这里,接下来讲讲在机器人构建中占据不少分量的数据获取API——今日诗词API、文艺主题图片API、微博图床API。今日诗词API 今日诗词API是乱码开发的一个可以返回一句古诗词名句的接口。它可以通过图片和JSON格式调用。今日诗词API根据不同地点、时间、节日、季节、天气、景观、城市、事件进行智能推荐。 官方文档地址是https://www.jinrishici.com/, 乱码大佬撰写的介绍文章则是https://luan.ma/post/jinrishici/。就本人所要构建的微博机器人而言,使用到的接口是https://v2.jinrishici.com/one…,而且是使用带token的调用方式。文艺主题图片API 这个图片API是九凌少子负责开发的,他的图源来自于360壁纸,主要功能就是根据调用需求,返回一张360壁纸的官方服务器上的图片URL。调用方式如下:https://www.yuluoge.com/api/index.php?cid=5 不同的cid值对应不同的分类,根据他的解释及本人测试,分类如下——cid=0 —— 默认图片,不分类型cid=1 —— 美女cid=2 —— 动漫cid=3 —— 风景cid=4 —— 游戏cid=5 —— 文艺cid=6 —— 文字控cid=7 —— 动物cid=8 —— 爱情 此外,这篇文章最后贴出来的源代码是基于他在今日诗词的Q群里分享的发微博源码改造而来的,在此感谢他的贡献。微博图床API 对于微博图床API的理解得力于这篇文章——《利用微博当图床-php语言实现》。 其使用到微博图片上传接口为http://picupload.service.weibo.com/interface/pic_upload.php 本文所构建机器人略有改动地使用了这篇文章里的获取新浪图床图片pid的PHP源码。源码如下:/** * 上传图片到微博图床 * @author mengkun http://mkblog.cn * @param $file 图片文件/图片url * @param $multipart 是否采用multipart方式上传 * @return 返回的json数据 /function upload($file, $multipart = true) { $cookie = ‘’; // 微博cookie $url = ‘http://picupload.service.weibo.com/interface/pic_upload.php' .’?mime=image%2Fjpeg&data=base64&url=0&markpos=1&logo=&nick=0&marks=1&app=miniblog’; if($multipart) { $url .= ‘&cb=http://weibo.com/aj/static/upimgback.html?wv=5&callback=STK_ijax’.time(); if (class_exists(‘CURLFile’)) { // php 5.5 $post[‘pic1’] = new CURLFile(realpath($file)); } else { $post[‘pic1’] = ‘@’.realpath($file); } } else { $post[‘b64_data’] = base64_encode(file_get_contents($file)); } // Curl提交 $ch = curl_init($url); curl_setopt_array($ch, array( CURLOPT_POST => true, CURLOPT_VERBOSE => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => array(“Cookie: $cookie”), CURLOPT_POSTFIELDS => $post, )); $output = curl_exec($ch); curl_close($ch); // 正则表达式提取返回结果中的json数据 preg_match(’/({.)/i’, $output, $match); if(!isset($match[1])) return ‘’; return $match[1];}微博机器人源码 列举了所要用到的几个重要API,最后还是贴一下机器人的源码吧。当然,也有相对应的GitHub仓库https://github.com/Leslie-Won…主模块//weibo.php<?phprequire_once ‘./weiboLogin.php’;header(“Content-type: text/html; charset=utf-8”);header(“Access-Control-Allow-Origin:”);header(‘Content-type: application/json’);error_reporting(0);/发送微博/function curl($url,$post=0,$header=0,$cookie=0,$referer=0,$ua=0,$nobody=0){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $httpheader[] = “Accept:/”; $httpheader[] = “Accept-Encoding:gzip,deflate,sdch”; $httpheader[] = “Accept-Language:zh-CN,zh;q=0.8”; $httpheader[] = “Connection:close”; curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader); if($post){ curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); } if($header){ curl_setopt($ch, CURLOPT_HEADER, TRUE); } if($cookie){ curl_setopt($ch, CURLOPT_COOKIE, $cookie); } if($referer){ curl_setopt($ch, CURLOPT_REFERER, $referer); } if($ua){ curl_setopt($ch, CURLOPT_USERAGENT,$ua); }else{ curl_setopt($ch, CURLOPT_USERAGENT,‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.167 Safari/537.36’); } if($nobody){ curl_setopt($ch, CURLOPT_NOBODY,1); } curl_setopt($ch, CURLOPT_ENCODING, “gzip”); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); $ret = curl_exec($ch); curl_close($ch); return $ret; }/** * 上传图片到微博图床 * @author mengkun http://mkblog.cn * @param $file 图片文件/图片url * @param $multipart 是否采用multipart方式上传 * return 返回的json数据 /function upload($file, $cookie, $multipart = true){ $url = ‘http://picupload.service.weibo.com/interface/pic_upload.php'.'?mime=image%2Fjpeg&data=base64&url=0&markpos=1&logo=&nick=0&marks=1&app=miniblog'; if($multipart){ $url .= ‘&cb=http://weibo.com/aj/static/upimgback.html?wv=5&callback=STK_ijax’.time(); if(class_exists(‘CURLFile’)){ //php 5.5 $post[‘pic1’] = new CURLFile(realpath($file)); } else { $post[‘pic1’] = ‘@’.realpath($file); } } else { $post[‘b64_data’] = base64_encode(file_get_contents($file)); } // echo $post[‘b64_data’]; //Curl 提交 $ch = curl_init($url); curl_setopt_array($ch, array( CURLOPT_POST => true, CURLOPT_VERBOSE => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => array(“Cookie: $cookie”), CURLOPT_POSTFIELDS => $post, )); $output = curl_exec($ch); curl_close($ch); // 正则表达式提取返回结果中的json数据 preg_match(’/({.)/i’, $output, $match); if(!isset($match[1])) return ‘’; return $match[1];} /** 通过今日诗词API获取诗词内容**/function jinrishici(){ $opts = array( ‘http’=>array( ‘method’=>“GET”, ‘header’=>“Accept-language: en\r\n”.“X-User-Token: k4z4CMgTyl3JN6s+y2iWWiHN6we+0J9V\r\n” ) ); $context = stream_context_create($opts); // Open the file using the HTTP headers set above $tangshi_pailie = json_decode(file_get_contents(‘https://v2.jinrishici.com/one.json', false, $context),true); //今日诗词API,带token版本 // $tangshi_pailie = json_decode(file_get_contents(‘https://v2.jinrishici.com/one.json'), true); //今日诗词api,不带token版本 $tangshi_title = $tangshi_pailie[‘data’][‘origin’][’title’]; //标题 $tangshi_dynasty = $tangshi_pailie[‘data’][‘origin’][‘dynasty’]; //朝代 $tangshi_author = $tangshi_pailie[‘data’][‘origin’][‘author’]; //诗人 $tangshi_line_numbers = count($tangshi_pailie[‘data’][‘origin’][‘content’]); $tangshi_content = $tangshi_pailie[‘data’][‘origin’][‘content’][0]; for ($i=1; $i < $tangshi_line_numbers; $i++) { $tangshi_temp_line = $tangshi_pailie[‘data’][‘origin’][‘content’][$i]; $tangshi_content = $tangshi_content."\n".$tangshi_temp_line; } //拼接全诗 $post_Poem = “《”.$tangshi_title."》"."\n".$tangshi_dynasty."·".$tangshi_author."\n"."\n".$tangshi_content; return “$post_Poem”;} include ‘./wbcookie.php’; $cookie = $config[‘cookie’]; //通过图片api获取图片,并转存微博图床 $bing_img = json_decode(upload(‘https://www.yuluoge.com/api/index.php?cid=5', $cookie, false),true); $bing_img_pid = $bing_img[‘data’][‘pics’][‘pic_1’][‘pid’]; echo “$bing_img_pid\n”; $tangshi = jinrishici(); echo “$tangshi\n”; $post=[ ’title’ =>‘今日要说什么?’, ’location’ => ‘v6_content_home’, ’text’ => “#诗词[超话]# #中华好诗词# #中国诗词大会#”."\n".$tangshi."\n"."\n",//需要发送微博的内容 ‘pic_id’ => “$bing_img_pid”, // ‘007CcEyfly1g042kquhztj31ns0u0tdu’,//微博图片id,需事先上传好 ‘isReEdit’ => false, ‘pub_source’ => ‘page_2’, ’topic_id’ => ‘1022%3A’, ‘pub_type’ => ‘dialog’, ‘_t’ => 0, ‘style_type’ => 1, ]; $url=‘https://weibo.com/aj/mblog/add?ajwvr=6&__rnd=2918942797035';//不需要改变 $referer=‘https://weibo.com/liufengshishe/home?topnav=1&wvr=6';//你的微博用户名(首页链接) $response = curl($url,$post,’’,$cookie,$referer); echo “$response\n发送成功”; 微博登录模块<?php if (!is_file(’./wbcookie.php’)) { CookieSet(‘SUB;’,‘0’); } include ‘./wbcookie.php’; require_once ‘./weiboAccount.php’; if (time() - $config[’time’] >203600||$config[‘cookie’]==‘SUB;’) { $cookie = login($sinauser,$sinapwd); if($cookie&&$cookie!=‘SUB;’) { CookieSet($cookie,$time = time()); } else { return error(‘203’,‘获取cookie出现错误,请检查账号状态或者重新获取cookie’); } } /** * 新浪微博登录(无加密接口版本) * @param string $u 用户名 * @param string $p 密码 * @return string 返回最有用最精简的cookie / function login($u,$p){ $loginUrl = ‘https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)&_=1403138799543'; $loginData[’entry’] = ‘sso’; $loginData[‘gateway’] = ‘1’; $loginData[‘from’] = ’null’; $loginData[‘savestate’] = ‘30’; $loginData[‘useticket’] = ‘0’; $loginData[‘pagerefer’] = ‘’; $loginData[‘vsnf’] = ‘1’; $loginData[‘su’] = base64_encode($u); $loginData[‘service’] = ‘sso’; $loginData[‘sp’] = $p; $loginData[‘sr’] = ‘19201080’; $loginData[’encoding’] = ‘UTF-8’; $loginData[‘cdult’] = ‘3’; $loginData[‘domain’] = ‘sina.com.cn’; $loginData[‘prelt’] = ‘0’; $loginData[‘returntype’] = ‘TEXT’; return loginPost($loginUrl,$loginData); } /** * 发送微博登录请求 * @param string $url 接口地址 * @param array $data 数据 * @return json 算了,还是返回cookie吧//返回登录成功后的用户信息json / function loginPost($url,$data){ $tmp = ‘’; if(is_array($data)){ foreach($data as $key =>$value){ $tmp .= $key."=".$value."&"; } $post = trim($tmp,"&"); }else{ $post = $data; } $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_HEADER,1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch,CURLOPT_POST,1); curl_setopt($ch,CURLOPT_POSTFIELDS,$post); $return = curl_exec($ch); curl_close($ch); return ‘SUB’ . getSubstr($return,“Set-Cookie: SUB”,’; ‘) . ‘;’; } /* * 取本文中间 / function getSubstr($str,$leftStr,$rightStr){ $left = strpos($str, $leftStr); echo ‘左边:’.$left; $right = strpos($str, $rightStr,$left); echo ‘<br>右边:’.$right; if($left <= 0 or $right < $left) return ‘’; return substr($str, $left + strlen($leftStr), $right-$left-strlen($leftStr)); } /* 设置cookie文件 / function CookieSet($cookie,$time){ $newConfig = ‘<?php $config = array( “cookie” => “’.$cookie.’”, “time” => “’.$time.’”, );’; @file_put_contents(’./wbcookie.php’, $newConfig); } /* 错误反馈 / function error($code,$msg){ $arr = array(‘code’=>$code,‘msg’=>$msg); echo json_encode($arr); } 微博账号模块<?php $sinauser = ’example@email.com’;//你的微博账号 $sinapwd = ‘123456789’;//你的微博密码 关于如何使用 本地搭建了lamp环境的话,开启lamp环境后,直接在浏览器地址栏输入localhost及主入口文件对应的路径就可以运行了(本人使用xampp)。 云服务器的话,本人的方案是使用宝塔服务器面板安装lamp环境后,使用xftp将文件传到apache服务器网站根目录上,开启lnmp环境就可以了的。关于安全性问题 实不相瞒,如果是在云服务器上直接跑这些php文件的话,是不太安全的。因为网站的公共用户具有可以访问微博账号文件的权限。所以,推荐对微博账号文件进行.htaccess设置,也推荐申请个小号来搭建。 具体操作有点复杂,可以参考这篇文章——《apache .htaccess文件详解和配置技巧总结》关于定时任务 设置定时任务的话可以使用linux主机的crontab命令。远程连接主机,连接成功后,输入命令crontab -e;会打开一个文件,按照格式输入需要执行的脚本;保存退出后,重启crontab服务。语法解释:“” 代表取值范围内的数字,“/” 代表”每”,“-” 代表从某个数字到某个数字,“,” 分开几个离散的数字参考文献《揭开“饮水机娘”的神秘面纱》《新浪微博自动(模拟)登陆详解及实现》《今日诗词开放接口-调用文档》《利用微博当图床-php语言实现》《apache .htaccess文件详解和配置技巧总结》《linux下crontab定时访问指定url》特别致谢九凌少子 ...

March 16, 2019 · 4 min · jiezi

你的微博也被盗赞?试试HSTS强制HTTPS加密

微博账户被盗赞或被动加关注的问题,可能很多用户都遇到过,每天都会发现自己的账户莫名其妙关注或点赞了几十个营销号、广告号、明星号的微博,挨个取消被盗的关注和赞,竟然成了日常最主要的微博操作,很多用户对此感到不厌其烦。原因分析从技术上看,能够给微博账号加关注或盗赞的途径通常有:1、微博账户被盗,能够被别人直接登录;2、使用第三方客户端等,可以通过微博开放平台OAuth拿到access token,然后权限被滥用;3、在浏览器上使用web版微博登录时,cookies被泄露了。对此,微博安全中心也曾给过一些安全建议,比如:建议用户更换密码、升级客户端、设置登录保护、清除第三方应用权限等等,但是不少用户按照建议完成这些操作后,被盗赞的问题仍然存在。在对不同客户端、web端的访问情况进行分析后我们发现,虽然微博已经启用HTTPS加密 很多开放平台的接口也使用HTTPS加密,但你的浏览器书签、别人发给你的链接、旧的外链、其他应用生成的链接都可能还是 HTTP 的。当部分请求由HTTP连接301跳转到HTTPS时,这个 HTTP 请求仍然会带上浏览器在 http://weibo.com 域下的所有 cookie。这么一来,当用户登录后在某个特定场景访问到HTTP的微博链接时,仍然可能遭遇cookie劫持,清除授权或修改密码也没有用。解决方法通过给 cookie 设置 secure 或者在服务器端设置 HSTS(HTTP Strict Transport Security) 也能解决这个问题,但是微博服务器端的设置是用户无法控制的,作为用户还有没有什么办法解决这个问题呢?沃通CA(www.wosign.com)建议:比较简单的做法就是,用户在Chrome浏览器手动设置HSTS预载入列表(preload list),将微博域名加入预载入列表,强制HTTPS加密访问。HSTS代表的是HTTPS严格传输安全协议,它是一个网络安全政策机制,能够强迫浏览器只通过安全的HTTPS连接(永远不能通过HTTP)与网站交互,这能够帮助防止协议降级攻击和cookie劫持。但是对于HSTS生效前的首次HTTP请求,依然无法避免被劫持,浏览器厂商们为了解决这个问题,提出了HSTS Preload List(预载入)方案:内置一份可以定期更新的列表,对于列表中的域名,即使用户之前没有访问过,也会使用HTTPS协议。Chrome运营了一个HSTS 预载入列表,大多数主流浏览器Firefox, Opera, Safari, IE 11 and Edge也都有基于Chrome列表的预载入列表。在Chrome浏览器设置HSTS预载入列表的方法是:在 Chrome 里打开 chrome://net-internals/#hstsAdd domain中增加微博主域名Query domain中能查询到就可以了在HSTS预载入列表中加入微博主域名后,Chrome再遇到HTTP的微博连接,会直接在浏览器内部就跳转到 HTTPS,确保请求从一开始就加密,保证通讯安全,防止cookie劫持、SSL Strip中间人攻击,您可以通过Chrome开发者工具对此进行验证。关注沃通CA获取全球信任SSL证书。

February 21, 2019 · 1 min · jiezi

安利Mastodon:属于未来的社交网络

我为Mastodon开发了一款安卓客户端,v1.0版本已经发布,欢迎下载使用源码在这里:https://github.com/shuiRong/Gakki ????????????正文Mastodon(长毛象)是什么?是一个免费开源、去中心化、分布式的微博客社交网络,是微博、Twitter绝妙的替代品。它不仅仅是一个网站,更是一个联盟:成千上万运行长毛象的独立社区形成了一个连贯的网络,虽然每个社区都是其特点,但都是整体的一部分。说人话!好,我重新说~首先你要知道,微博有的功能,Mastodon基本都有,但它却有着微博绝对无法企及的特点(也正是它迷人之处~)它的源代码是公开的,因此任何懂点技术的人都可以下载它的源码,部署在你自己的服务器上,称之为一个实例。这样其他人就可以在你的实例上注册,成为你的用户。更多实例你可以在这里找到,这里我仅列出几个特别的:mastodon.social 长毛象官方团队运营的实例(需翻墙)cmx.im 长毛象中文实例,中文用户很多,目前5471个用户(我也在这儿~欢迎关注我)(需翻墙)pawoo.net 日本P站(pixiv)官方团队运营的实例,画师超级多~(需翻墙)acg.mn 主打ACG内容的中文实例,目前2855个用户(无需翻墙)开源意味着什么?意味深长!意味着大多数实例的站长都是个人或者小团体,而非追求利益的商业公司。这决定着用户不会被广告乱入、隐私窃取恶心到。看看微博吧,无处不在的烦人广告简直恶心死了。另外,还有一把达摩克利斯之剑时刻悬浮在用户头上,这也不能说,那也不能提!(讽刺的是,他们还不告诉你都有哪些不能说!)Fuck!与其相反,Mastodon基本没什么审查。当然,每个实例都有他们自己的社区准则,这里贴出长毛象中文站的Mastodon尊重用户、尊重用户的数据:如果你不喜欢这个实例的氛围,完全可以导出你的所有数据,然后导入到其他你喜欢的实例,又是一条好汉!尽管基本所有数据都支持导出,但导入功能目前还未完善:仅支持关注列表、屏蔽列表、隐藏列表,未来官方会支持。用户不仅可以看到当前实例其他人发出的“消息”(我们都称之为嘟文),也可以通过“跨站公共时间轴”,看到其他实例用户发出来的嘟文。是不是很奇妙?Mastodon世界就是通过无数个实例连接起来的~那么,Mastodon世界到底有多少个实例、多少个用户呢?在instances.social网站查询的结果是:至少有8484个实例,170w用户!P.S. 补一张首页图都看到这儿了,少年还不注册个玩玩?(对了,注册仅需要邮箱,手机号是不需要的哦~)长毛象中文站:https://cmx.im/about

February 18, 2019 · 1 min · jiezi