开源小程序: 唯美小姐姐

0x1小程序介绍 这是一款看漂亮小姐姐的小程序,开源地址是: https://github.com/pengwei1024/HiBeauty。话不多说,先上个截图各位小主看看合不合胃口。 怎么抱走小姐姐呢? 可以微信小程序搜索 唯美小姐姐 或者扫码抱走吧 0x2原理分析 各位小主看完了小姐姐,请把口水擦干,我们来看看怎么new一个小姐姐吧。我觉得技术点主要下面两个(当然第一个才是大家最关心的): 小姐姐数据的抓取和处理 小程序从服务器拉取并展示数据 数据抓取 小姐姐的数据主要来自微博美女帅哥大V, 如x粉大魔王等等,在此向各位辛勤付出的大V致谢。抓取用的方案是Headless Chrome + selenium,简而言之就是用的服务器上web自动化方案。 为什么采用这个方案呢,直接抓取网页的方式帐号容易被封,自动登录获取cookie的技术难度都比较大。而web自动化就是模拟网页点击,一切的操作都是so easy。 不了解 Headless Chrome 和 selenium?请看下面的教程: 安装Headless Chrome selenium教程 linux上配置一个定时任务,实现全自动化的抓取,再来个图片分类器把非小姐姐图片去除,自动更新,开开心心欣赏小姐姐真是美滋滋

阅读全文...

gradle编译完成后上传apk

项目中有个需求想本地编译完成自动上传release 的apk到服务器,因为功能比较简单,不想借助第三方来实现,这是个我自定义gradle task来上传apk的例子。 自定义task task apkUpload(type: Exec, dependsOn: ['assembleRelease']) { def version = project.android.defaultConfig.versionName def apkPath = "$buildDir/outputs/apk/release/app-release.apk" commandLine "curl", "-F", "apk=@$apkPath", "上传地址" } 创建了一个Exec类型的task, 依赖assembleRelease任务, 最后执行shell curl -f apk=@{文件路径} {上传路径} 来完成上传 服务器示例 (PHP Codeigniter) /** * 上传apk * @param $version */ public function

阅读全文...

centos安装headless chrome

Centos 7 安装 直接运行安装脚本 curl https://intoli.com/install-google-chrome.sh | bash 安装完成后会提示: Successfully installed google-chrome-stable, Google Chrome 65.0.3325.146 . 运行chrome google-chrome-stable --no-sandbox --headless --disable-gpu --screenshot https://www.baidu.com 正常的话会在当前目录生成screenshot.png的文件 驱动 下载chrome驱动并放到某个目录下: http://npm.taobao.org/mirrors/chromedriver/2.36/chromedriver_linux64.zip , 运行./chromedriver, 如果能返回下面内容说明驱动安装正常 Starting

阅读全文...

PHP使用上一些问题笔记

json_encode失败切没有任何输出 # 使用json_last_error输出错误信息 var_dump(json_last_error()); # 发现错误码是5 JSON_ERROR_UTF8, 转成uft-8就好了 mb_convert_encoding($value, "UTF-8", "auto"); 参考文档 php json_encode输出空白问题 How to solve JSONERRORUTF8 error in php json_decode?

阅读全文...

搬瓦工替换ip后无法连接站点解决方案

前段时间因为某些特殊原因搬瓦工服务器在国内不能访问了(测试是否被X可以用ping.pe),还好搬瓦工提供了换ip的服务,替换ip后访问是没有任何问题了,但是不能访问任何其他网页的服务,比如用脚本安装lnmp都提示找不到服务器。我自己在服务器上测试 ping所有的服务返回都是ping: unknown host [root@localhost ~]# ping google.com ping: unknown host google.com [root@localhost ~]# ping github.com ping: unknown host github.com [root@localhost ~]# ping baidu.com ping: unknown host baidu.com 一般这种情况都是DNS解析问题,但是不可能这些知名企业解析会出问题,所以联系搬瓦工客服咨询这个问题,以下是他们给的解决方案,成功解决了我的问题:

阅读全文...

LiteApp Native Component实现原理

引述 LiteApp中有一种类似微信小程序Native的控件,像地图、Canvas等等,覆盖在WebView层级之上,比所有网页的层级都高。这种原生控件是怎么实现的呢?我们今天就从LiteApp的qy-input控件入手分析下原理 分析 先看下qy-input的关键源码 <template> <qy-native-base :hover="hover" :nativeData="nativeData" nativeTag="QiyiInput" @bindinput=""/> </template> 布局里面引用了qy-native-base, 并输入了hover、nativeData、nativeTag 3个属性,对于属性作用后面会介绍到,还是看下qy-native-base的实现, 实现类在mp-fe-core/src/platforms/qy/runtime/components/qy-native-base.js import * as nativeOps from '../../bridge/qnode-ops.native';

阅读全文...

PHP依赖管理工具composer使用

简介 Composer 是 PHP5.3以上 的一个依赖管理工具。它允许你声明项目所依赖的代码库,它会在你的项目中为你安装他们。Composer 不是一个包管理器。是的,它涉及 "packages" 和 "libraries",但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。 安装 // 下载 composer-setup.php php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" // 校验签名(可选) php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified';

阅读全文...

重温那些不常用的运算符

1.非运算符 ( ~ ) int a=2; System.out.println("a 非的结果是:"+(~a)); 位运算都是补码运算的,2的二进制码应写8位的:00000010 按位取反为111111101,此时仍为补码,而补码转源码需要先-1,符号位不变再取反。换算为原码为:10000011 即-3。有个规律,取反都是原数+1再转为负数,如~19为-20 原码和补码转换关系 分两种情况,以八位原码转换补码为例: 正数(符号位为0的数)补码与原码相同. 负数(符号位为1的数)变为补码时符号位不变,其余各项取反,最后在末尾+1 例如:原码01100110,补码为:01100110 原码11100110,先变反码:10011001,再加1变为补码:10011010 计算机中的符号数有三种表示方法,即原码、反码和补码。

阅读全文...

评论组件畅言主题样式修改

随着多说、网易云跟帖的停止服务,要找一个合适的博客评论系统还真不容易,目前稍微好点的可能就畅言和友言了,实话说这两个的体验真不是很满意,所以就有了这篇文章,看看能不能想办法去自定义样式。 畅言官方提供了一些样式定制 http://changyan.sohu.com/help/a-custom-css-setting.html 不是太好改,整体上还是感觉不好,特别是侧边栏天天弹广告。 在浏览畅言官网的时候发现官网用的评论框和我们的不太一样,官网的效果明显更清新简洁 , 但是后台并没有提供配置这个主题的方法啊!! # 官网样式: # 目前样式: 经过一番分析发现初始化的 JS 代码是一样的,但是加载的样式结构和代码都完全不一样 # 官网结构: # 目前结构: 经过分析,一个获取配置的接口引起了我的注意: https://changyan.sohu.com/api/2/config/get/cyqARl5Jo?callback=changyan523657214 返回的内容如下: changyan523657214({"data":{"isv":{"id":"889","auditMode":"1"

阅读全文...

华为 P9/P9 Plus 获取root权限

准备 window 电脑一台 申请解锁 到 EMUI 官网 https://www.emui.com/cn/plugin/unlock/detail 输入手机信息申请解锁 输入正确资料后会提示 您的解锁码为:******** 下载 adb 工具包 http://dlc2.pconline.com.cn/filedown3590356968223/1UIwPc3e/adb1.0.32.zip) 按官网介绍的开始解锁 https://www.emui.com/cn/plugin/unlock/step 下载 root 工具 pan.baidu.com/s/1mi19eA0 密码:

阅读全文...