企业安全建设之办公安全篇(1)

我当时进入到某宠物电商的时候,深刻的记得,当时公司为了降低代码被开发人员拷走的风险,给每个开发人员配置一个台式机用于在内网进行开发,然后配置一个笔记本用于在外网查询资料。

每个台式机的外部都套了一个大黑箱,只有一个小豁口用于台式机的插线的功能,然后需要移位开箱的时候,需要进行申请备案,才能操作。

现在看来这种方式虽在有点low,但是在当时的环境和条件下,已经算是在不易了,尽可能对代码外泄做了一定的物理防护,毕竟我进去之前,公司也没有专业的安全人员,能在一些基线上做点工作,实属不易,而且确实提高了内部人员做恶的成本。

当时我记得上外网用了一个海蜘蛛的网络设备,不是很稳定,经常断网,而且没有对上网行为进行管控,然后对外网的访问限制几乎是没有的,但是内网是无法直接访问到外网的,当然除了我们运维人员和几个领导的之外。总体上的原则是:准进不准出。

在很长的一段时间内,保护了数据的安全,直到后面我们搬移到了新的办公场所,重新对网络进行规划和设计,才引入了深信服的上网行为管理设备。

企业安全建设-业务风控篇(1)

进入到某电商宠物之后,我就开始接触各种羊毛党和黑产,原因是公司的运营人员对风控这档事儿好像漠不关心,前后被大大小小的搞了很多次,没有复盘,没有总结,结果还是好了伤疤忘了痛,压根没想过如何把实惠给到真实用户,而是只关心营销数据或者GMV这些指标去了,让人感觉不理解。

那么我是怎么关心起业务风控的呢? 我记得有一次,我在测试一个用户活动,好像是个签到的功能,我就简单地用脚本重复请求了一次,结果也成功,成功之后就会获取一种官方的虚拟抵扣币,暂且叫e币吧 ,而官方的使用规则就是,这个e币可以抵扣总商品价格的10%,简单来说 就是100元的商品,我可以用10个e币抵扣10元,只需要付款90元。这种获取e币的渠道多种多样,主要是鼓励用户多参加官网的活动,提升用户的活跃度,从出发点来看,是ok.

但是这里有个问题,就是这些参与活动的渠道是否都有被严格做过安全测试,我当时也是严重怀疑,然后就自己去灰盒测试了几个活动,果不其然,其中一部分活动存在被绕过或者可以重复参加的情况,可能很多人(包括开发人员+产品经理+测试人员 )都没有发现。

这些对于专业的羊毛党和黑产来说,是他们所愿意看到的。更严重的是,除了我之外,还没有人去追踪过这些e币的合理性,比如说到底有多少真实用户参与了某个活动,获得了多少个e币的奖励。

说实在的,看到这样的情况,也是很无语的,从实际价值来看,这些e币其实都是公司的营销成本,如果没有这些e币,那么用户就需要追加商品被抵扣的部分,对于公司来说,是资金的损失,但是一些人对待这些e币的态度,认为就是一些虚拟币,公司想发多少,就发多少,即使被薅羊毛了,也问题不大。

有这种看法的人不在少数,而且天真地以为这种情况对公司的危害不大。其实我当时也挺震惊的,因为跟钱相关,真金白银,我想对于公司损失不只是现金流,而重要是那些实实在在的优惠被羊毛党和黑产所窃取。

企业安全建设之运维安全篇(1)

我记得当时进入某宠物电商的时候,当时是以PHP开发工程师的角色,本来以为所做的工作也会是以PHP开发为主,不过命运使然,在多次跟当时技术总监“沟通交流”之后,我被赋予了更有挑战性的角色-运维安全,就这么顺理成章成为运维组的一员。

其实没有什么的私下沟通,而是当时我几乎每天都会在公司官方上找到了几个Bug,于是就整理成文档,通过邮件抄送给技术总监,而技术总监也希望有人把公司的安全的管理起来,所以一切看起来都是很自然而然。

进入公司的第一个挑战,就是很多PHP开发的开发环境都在本地使用的wamp或者phpstudy搭建的集成环境,每个开发配置的php.ini也不尽相同,导致跟线上测试环境,线上生产环境的差异比较大。所以领导希望运维组能想办法解决此事。

其实当时我们组内沟通了一下这个问题的解决方案,最后给出的方法是,在本地服务器上部署一套跟线上测试环境差不多的PHP环境,然后给每个PHP开发人员创建一个Web根目录,然后根据开发机的IP来进行区分,映射到不同的根目录里面去,这样开发人员在保存代码的同时,会通过ftp将代码上传到本地服务器,然后在本地完成host的绑定。

比如 程序员A(192.168.2.1) 将www.xx.com 的host绑定到 192.168.2.11 ,然后在本地浏览器访问www.xx.com的时候,会访问192.168.1.1这台主机,这台主机上的配置nginx的转发功能,根据192.168.2.1将请求转发到 /www/htdocs/a/www.xx.com/下。

程序员B(192.168.2.2) 将www.xx.com 的host也绑定到 192.168.2.11 ,然后在本地浏览器访问www.xx.com的时候,会访问192.168.1.1这台主机,这台主机上的配置nginx的转发功能,根据192.168.2.2将请求转发到 /www/htdocs/b/www.xx.com/下。

但是都是使用的同一套PHP环境,唯一的不足点,是会导致硬盘数据量会增加,不过从实际效果来看,达到了预期,有点瑕疵也是能接受的。

如何爬取百度好看短视频

这里跟大家分享一下我是如何爬取到百度好看短视频的,分为以下的几步了,首先是打开网站http://haokan.baidu.com,建议使用chrome

可以根据频道,然后选择其中一个用户,这里以“洋子说动物“为例,然后点击用户的头像,进入到该用户的主页。

打开F12,开发者工具,然后选择“网络”-> “Fetch/XHR”,拉动鼠标向下,

在页面上会看到有视频不断的补充进来,然后网络请求栏里面,也陆续增加一些记录,这些记录是ajax的异步请求,返回的内容就是新增加进来的视频,然后我们详细查看下响应内容,

可以清楚的看到返回的格式是json,一次返回数量是10个视频,然后具体的就是每个视频的详情字段:

cover表示视频封面

duration 表示视频时长

playcnt 表示播放次数

publish_time 表示发布时间

title 表示视频的标题

vid. 表示视频的id

大家注意到这里,没有视频的播放地址,所以我们还需要打开一个视频观看,来查看视频的播放地址,

同样的打开开发者工具,然后选择“网络”-> “媒体”,可以看到视频的地址

这个视频的地址有点长,然后可以通过截取的方式,提取出mp4的简洁地址。

整理下代码思路,需要2个循环,第1个 是获取这个用户的所有视频链接,提取出视频id,第2个是访问视频的播放页面,获取到视频的地址。

最后是将所有的相关视频数据存入到数据库中。

另外就是需要加一个定时任务,因为我们不知道原创作者是什么时候更新视频,所以只能通过定时来拉取,判断目前用户已发布的视频是否被我们爬取出,如果爬取过,就不爬取,如果有没爬取过的数据,就爬取一遍。就是同步原创者的更新量。

这个方案也可以通过crontab,也可以通过Python的apscheduler来实现,方法有很多,大家可以去研究一下。

       Python实例代码我已经打包好了,需要的伙伴,找我私聊,发网盘链接

       接下来我给大家讲解下,如何将爬取的视频全自动同步到视频号上的。

screen 一个后台运行的神器

之前在运维的工作中,一直都是用nohup来实现让一个进程在后台执行而不影响到终端的输出

一般的格式如下:

nohup python a.py >> a.log &

这样的结果是让python a.py这个进程放到后台执行,并将所有的输出(正确输出/异常输出)都能打到a.log 这个文件里面。

最近因为要做个无人直播的项目接触到screen,发现这个工具也能实现类似的功能。

1.安装screen

yum -y install screen

2.使用screen,先创建一个屏幕

screen -S hello #hello为屏幕的名字

3查看目前的打开的屏幕

screen -ls

4.将某个屏幕放入到后台执行

screen -d hello

5.再次查看屏幕列表

screen -ls

这时会发现 hello这个屏幕的状态 有attached->dattached,意思是转变成了后台挂起执行

6.新开个终端,进入到某个屏幕中

screen -r hello

7直接结束某个屏幕

screen -X -S hello quit

即可结束某个屏幕

Python项目中调试执行单文件的注意点

有时候 ,我们在一个python项目做单文件调试的时候,会发现想单独执行某个文件,但是直接执行的话,会导致module not found 问题,这些文件从系统的path路径找不到,程序的引入文件,所以在这个时候,需要用到sys这个库。

你需要让代码告诉编译器,我引入的自定义的库文件在哪里,所以 一般的解决方案:

import sys

sys.path.append(‘./pathfile’)

#pathfile代表程序需要引入文件的相对路径或者绝对路径,

这样编译器就知道除了path以外,还需要去哪里引入库文件。

碰到的linux的dns解析问题

之前接到一个需求,在某台Linux上,需要对测试环境的所有域名进行解析,考虑到如果使用/etc/hosts的话,每个域名都要手动去配置一条记录 比如

127.0.0.1 hello.test.com

貌似解决了,但是这里有个前提提条件是,所有域名 ,公司的域名有几千个,不可能手动一个一个的去加记录,那么怎么处理呢?

这个时候需要 /etc/resolv.conf出场,这个文件是linux本机的dnsserver,所有在这里配置一个dnsserver就可以了,比如

10.99.88.1

当主机访问 x.test.com ,会先去resolv.conf读取dnsserver,然后会逐一尝试,当使用到10.99.88.1 就相当于 x.test.com->10.99.88.1 ,10.99.88.1一般是nginx的代理机器,所以能将x.test.com代理到后端真实的server上,这样就可以解决所有域名解析的问题了。

前提是10.99.88.1需要能转发x.test.com的请求到后端。

AI短视频生成平台

之前在网上看过一些文章,介绍有用python来生成短视频,具体可以自己去搜,我之前使用过ffmpeg做过类似的,但是效果不是很理想,然后重新试了下moviepy,opencv,PIL这些库,感觉比ffmpeg效果好得多,基本已经可以直接使用。

先给大家上个demo

视频有文案切换,有文案字体,有背景音乐,算是一个合格的自媒体短视频吧,打个70分吧。

生成一个这种视频,只花了0.2s, 一些会玩的小伙伴肯定会想,有这玩意可以直接每天批量生产。

理论是这样,实际上也差不多,因为字体/文案/bgm/背景,甚至字幕/时长等都是可以随机选取的。

这对于自媒体平台的查重检测机制来说,可以完美绕过!

后续我会从头开始,给大家介绍这款工具的开发思路和具体开发流程,如何自动化上传到各大自媒体平台。

感兴趣的小伙伴可以关注这个系列的文章。

希望帮助你打开思路,在自媒体创业路上给你一些方向!

也可以关注网站 http://www.liangmlk.cn

在mac下使用pyautogui 需要注意的事

之前一直用的都是selenium,绝对神器,没啥好说,偶尔接触到pyautogui,看了一些使用场景,感觉Gui的自动化,完全可以交给pyautogui,于是果断开始学习pyautogui

在mac下开发,刚上来碰到两个问题,记录一下

第一个:就是鼠标不飘移,怪了,研究了下,是需要修改“用户偏好设置”,把 “鼠标”的相关权限 赋予给控制终端

第二个,就是用到locateOnScreen 和 screenshot 这个函数,一直截图下来就是mac的背景图,一直无法进行完整的截图,心想应该是配置,搜索了半天,没有找到相关的解决方案,然后自己又试了一下,果然是,需要到“用户偏好设置”把“屏幕录制”权限赋予给IDE, 简单处理后,run fine!

百度云加速 真垃圾

之前用了百度云加速,开始还是觉得不错的,毕竟免费,而且一个顶级域名支持10子域名,也支持https,还支持cdn加速,但是就在昨天,su.baidu.com竟然给崩了。

事情是这样的,本来在测试自己的一个接口,结果返回异常,猜测是服务挂了,连忙去查看服务状态,果然,然后请求自己的官网,结果是访问异常,太扯了,怀疑被攻击了,连忙登陆su.baidu.com,结果一看官网也挂了,这不是开玩笑吧,堂堂百度竟然挂了,然后请朋友帮忙测试一下官网,确定是挂了,然后只有去修改dns,先直接回源到源站,为了防止被搞,还是将几个重要的子域名迁到了加速乐,结果了 加速乐不支持https ,尼玛真是坑呀,被逼无奈,只有用A解析了。

今早一来 ,发现su.baidu.com恢复了,赶忙把dns改了回来,结果又发现,http没问题,但是https报错了,一直找原因,最后想想,是不是云加速的证书失效了,结果发现没有失效,心想是否是昨天的故障导致节点上的证书丢失了,然后重新部署了节点证书,果然恢复了。

这次事故得到了几点启示:

1.一定要做监控,发现异常时间有点晚

2。一定要有后备,发现问题,要么bypas,要么迁移,应急演练很重要呀

3。免费的东西,真心有好有坏,只有碰运气了