;

0×01 前言 前两天在百家号上看到一篇名为《反击爬虫,前端工程师的脑洞可以有多大?》的文章,文章从多方面结合实际情况列举了包括猫眼电影、美团、去哪儿等大型电商网站的反爬虫机制。的确,如文章所说,对于一张网页,我们往往希望它是结构良好,内容清晰的,这样搜索引擎才能准确地认知它;而反过来,又有一些情景,我们不希望内容能被轻易获取,比方说电商网站的交易额,高等学校网站的题目等。因为这些内容,往往是一个产品的生命线,必须做到有效地保护。这就是爬虫与反爬虫这一话题的由来。本文就以做的较好的“猫眼电影”网站为例,搞定他的反爬虫机制,轻松爬去我们想要的数据! 0×02 常见反爬虫 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。而作为程序员的我们只关心数据采集部分,处理什么的还是交给那些数据分析师去搞吧。 一般来说,大多数网站会从三个方面反爬虫:用户请求的Headers,用户行为,网站目录和数据加载方式。前两种比较容易遇到,大多数网站都从这些角度来反爬虫,而第三种则相对比较特殊,一些应用ajax的网站会采用,这样无疑会增大了爬虫爬取的难度。 然而,这三种反爬虫策略则早已有应对的方法和策略。如果遇到了从用户请求的Headers反爬虫机制,可以直接在爬虫中添加Headers,将浏览器的User-Agent复制到爬虫的Headers中;或者将Refer…

反击“猫眼电影”网站的反爬虫策略 2017年7月26日
;

1. 前言 对于一张网页,我们往往希望它是结构良好,内容清晰的,这样搜索引擎才能准确地认知它。 而反过来,又有一些情景,我们不希望内容能被轻易获取,比方说电商网站的交易额,教育网站的题目等。因为这些内容,往往是一个产品的生命线,必须做到有效地保护。这就是爬虫与反爬虫这一话题的由来。 2. 常见反爬虫策略 但是世界上没有一个网站,能做到完美地反爬虫。 如果页面希望能在用户面前正常展示,同时又不给爬虫机会,就必须要做到识别真人与机器人。因此工程师们做了各种尝试,这些策略大多采用于后端,也是目前比较常规单有效的手段,比如: User-Agent + Referer检测 账号及Cookie验证 验证码 IP限制频次 而爬虫是可以无限逼近于真人的,比如: chrome headless或phantomjs来模拟浏览器环境 tesseract识别验证码 代理IP淘宝就能买到 所以我们说,100%的反爬虫策略?不存在的。 更多的是体力活,是个难易程度的问题。 不过作为前端工程师,我们可以增加一下游戏难度,设计出一些很(sang)有(xin)意(bing)思(kuang)的反爬虫策略。 3. 前端与反爬虫 3.1 font-face拼凑式 例子:猫眼电影 猫眼电影里,对于票房数据,展示的并不是纯粹的数字。 页面使用了font-face定义了字符集,并通过un…

反击爬虫,前端工程师的脑洞可以有多大? 2017年7月26日
;

XML-RPC is a remote procedure call (one process calling the function of another process via a remote connection) protocol which uses XML to represent data and HTTP to make the calls. Although applications can explicitly provide their own REST APIs for RPC, a standard protocol can help security and provide many other benefits. For example, developers don’t have to design a REST API architecture from scratch and also a single client can be used to make remote procedure calls to various server applications which support the standard protocol. Therefore, XML-RPC was introduced …

XML-RPC接口开发实例 2017年7月26日
;

1.POST xml内容 <?xml version="1.0" encoding="iso-8859-1"?> <methodCall> <methodName>wp.getUsersBlogs</methodName> <params> <param><value>username</value></param> <param><value>password</value></param> </params> </methodCall> 2.返回信息片段 <member> <name>isAdmin</name> <value> <boolean>1</boolean> </value> </member> <member> <name>faultString</name> <value> <string>用户名或密码不正确。</string> </v…

wordpress之xmlrpc攻击过程模拟 2017年7月26日
;

配置文件说明 需要修改的配置文件是WordPress根目录下的 wp-config.php 文件,记得以 UTF-8 无 BOM 格式编码。 开启调试模式 设置调试模式要修改的是 WP_DEBUG 这个常量,默认是: define(‘WP_DEBUG’, false); 需要开启时找到这行并修改为: define(‘WP_DEBUG’, true); 即可,false代表关闭,true代表开启。 输出调试信息 如果需要输出调试信息到日志文件(前提是开启了调试模式),在下面加一句 define(‘WP_DEBUG_LOG’, true); 即可,调试信息会被保存到 wp-content 目录下 debug.log 文件。 不在页面显示 如果并不需要在页面显示调试信息,那么你可以加上这一句 define(‘WP_DEBUG_DISPLAY’, false); 来实现。这个一般配合 WP_DEBUG_LOG 使用,即只输出日志不在页面显示。 修改静态脚本 如果你需要调试WordPress的CSS和Javascript代码,那么你可以加这一句 define(‘SCRIPT_DEBUG’, true); 来调用完整版代码(默认调用的都…

wordpress开启调试模式及错误日志 2017年7月26日
;

1.简介 评论添加自定义字段 2.用法 <?php add_comment_meta( $comment_id, $meta_key, $meta_value, $unique ); ?> 3.实例 Add a custom posted value to every new comment <?php function add_custom_comment_field( $comment_id ) { add_comment_meta( $comment_id, ‘my_custom_comment_field’, $_POST[‘my_custom_comment_field’] ); } add_action( ‘comment_post’, ‘add_custom_comment_field’ ); ?>

wordpress评论添加自定义字段add_comment_meta 2017年7月25日
;

1.简介 add_post_meta 添加一个自定义字段(Custom Field)到指定的日志,页面或者 post type 中。 如果 $unique 参数设置为 true,并且指定的 meta key 已存在,那么这个函数返回 false 并且不对现有的字段做任何修改,否则添加字段并返回 true。 2.用法 <?php add_post_meta($post_id, $meta_key, $meta_value, $unique); ?> 3.参数 $post_id (integer) (required) 将要添加自定义字段的日志 ID。 Default: None $meta_key (string) (required) 将要添加自定义字段的名称(key)。 Default: None $meta_value (mixed) (required) 将要添加自定义字段的值,如果是一个数组,将会被序列化成字符串。 Default: None $unique (boolean) (optional) 设置当前的 key 是否为唯一的,当设置为 true,将保证当前日志没有以 $meta_key 作为 key 的自定义字段,并且如果已经存在,则添加不成功。 Default: false 4.返回值 (bool) 添加成功返回…

wordpress文章添加自定义字段add_post_meta 2017年7月25日
;

$input = file_get_contents("php://input"); var_dump($input);

一次接收所有POST数据 2017年7月25日
;

<form action="<?php echo $_SERVER[‘PHP_SELF’];?>" method="post"> if(isset($_POST[‘submit’])) { $item=$_POST["item"]; echo $item; } action为空也可以

form表单提交到达当前页面 2017年7月25日
;

那些你不知道的爬虫反爬虫套路 前言 爬虫与反爬虫,是一个很不阳光的行业。 这里说的不阳光,有两个含义。 第一是,这个行业是隐藏在地下的,一般很少被曝光出来。很多公司对外都不会宣称自己有爬虫团队,甚至隐瞒自己有反爬虫团队的事实。这可能是出于公司战略角度来看的,与技术无关。 第二是,这个行业并不是一个很积极向上的行业。很多人在这个行业摸爬滚打了多年,积攒了大量的经验,但是悲哀的发现,这些经验很难兑换成闪光的简历。面试的时候,因为双方爬虫理念或者反爬虫理念不同,也很可能互不认可,影响自己的求职之路。本来程序员就有“文人相轻”的倾向,何况理念真的大不同。 然而这就是程序员的宿命。不管这个行业有多么的不阳光,依然无法阻挡大量的人进入这个行业,因为有公司的需求。 那么,公司到底有什么样的需求,导致了我们真的需要爬虫 / 反爬虫呢? 反爬虫很好理解,有了爬虫我们自然要反爬虫。对于程序员来说,哪怕仅仅是出于“我就是要证明我技术比你好”的目的,也会去做。对于公司来说,意义更加重大,最少,也能降低服务器负载,光凭这一点,反爬虫就有充足的生存价值。 那么爬虫呢? 最早的爬虫起源于搜索引擎。搜索引擎是善意的爬虫,可以检索你的一切信息,并提供给其他用户访问。为此他们还专门定义了 robots.txt 文件,作为君子协定,这是一个双赢的局面。 然而事情很快被一些人破坏了…

互联网中一半以上的流量都是爬虫?不,比这还多 2017年7月17日
;

流程:apache2->mysql->php->phpmyadmin 步骤一:安装apache2 sudo apt-get update sudo apt-get install apache2 步骤二:安装mysql,中途需要两次输入数据库密码 sudo apt-get install mysql-server mysql-client 如何判断mysql是否安装成功: sudo service mysql restart 让apache支持mysql: sudo apt-get install libapache2-mod-auth-mysql 安装这个模块后,apache才能支持mysql。 登录mysql: mysql -u root -p 步骤三:安装php sudo apt-get install php5 让Apache支持php sudo apt-get install libapache2-mod-php5 安装php5-gd模块 sudo apt-get install php5-gd 安装mcrypt模块 sudo apt-get install php5-mcrypt sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available sudo php5enm…

ubantu手动安装php环境 2017年7月16日
;

步骤一: 地址栏输入,chrome://version,“个人资料路径”即为本地路径 步骤二: 复制地址在文件夹内打开,进入到“Extensions”目录 如何知道插件对应的目录 步骤三: 地址栏输入,chrome://extensions/ 此处ID即为对应的目录名

如何查看chrome插件源文件 2017年7月16日
;

步骤一:下载bigdump.php(http://www.ozerov.de/bigdump/usage/) 步骤二:通过编辑器bigdump.php配置数据库连接信息 步骤三:将sql文件一起放于bigdump.php所在的文件夹或子目录内 步骤四:通过浏览器访问bigdump.php

通过BigDump导入超大MySQL数据文件 2017年7月10日
;

步骤一: crontab -e crontab -l查看 步骤二: #每分钟执行一次 */1 * * * * /usr/bin/php5 /var/www/site/inde.php #每小时执行一次 0 * * * * /usr/bin/php5 /var/www/site/inde.php #每天执行一次 0 0 * * * /usr/bin/php5 /var/www/site/inde.php #每周执行一次 0 0 * * 0 /usr/bin/php5 /var/www/site/inde.php #每月执行一次 0 0 1 * * /usr/bin/php5 /var/www/site/inde.php #每年执行一次 0 0 1 1 * /usr/bin/php5 /var/www/site/inde.php 步骤三:退出保存 点击键盘上的Esc键,输入“:wq”回车 # +—————- minute (0 – 59) # | +————- hour (0 – 23) # | | +———- day of month (1 – 31) # | | | +——- month (1 – 12) # | | | | +—- day of week (0 – 6) (Sund…

crontab定时任务 2017年6月30日
;

<?php $a= array(‘张三’,’李四’,’王五’); $b= array (’23’,’24’,’25’); $c= array (‘北京’,’上海’,’广州’ ); foreach($a as $key=>$val){ $d[$key][‘姓名’]=$a[$key]; $d[$key][‘年龄’]=$b[$key]; $d[$key][‘城市’]=$c[$key]; } var_dump($d); ?>

php多个一维数组合并成二维数组 2017年6月30日
;
透视扑克骗术 2017年6月10日
;
创意动图 2017年6月6日
;
滑板教程 2017年6月5日
;

需求:对两张拍摄角度大于180度的全景图片拼接,生成一张360度全景图,首尾也要接合 问题描述:PS本身的图片自动拼接功能只做中间接合,两边却未作处理 原理:PS的接合功能会自动寻找图片重叠区域作为接合依据,因此通过一次切片后的两张图片就失去了重叠部分,此时软件自动寻找首尾的重叠区域 步骤一(初步接合): 1.file->automate->photemerge… 2.layout选择reposition,添加图片生成初步接合的图片 步骤二(首尾接合): 1.对上步生成的图片进行纵向切片,一分为二 2.对切片生成的两张图片再次执行步骤一过程,二次接合图片 步骤三(细节修改): 1.此时图片首尾已经接合,但是纵向会产生一点点移位 2.新建图层,用选区工具框取图片左侧或者右侧纵向一块区域,复制到新图层 3.选中新图层执行操作,edit->transform->sket拉升靠边的变形点使得最左侧和最后侧纵向对齐,可以打开辅助线方便操作

ps拼接全景图片流程 2017年6月5日
;

低的角度拍摄:从较低的角度拍摄效果会出乎意料的好。不仅能收纳下更多的运动员,也能使他们看起来更高大,另外还能避免一些不必要的杂乱背景。

运动跟拍,广角,环绕,低视角,让画面更有感染力 2017年6月1日
;

英文版对应菜单:video effects->distort->warp stablilizer

Premiere Pro CC 教程 5.4 处理抖动画面 2017年5月31日
;

$postdata = http_build_query( array( ‘var1’ => ‘some content’, ‘var2’ => ‘doh’ ) ); $opts = array(‘http’ => array( ‘method’ => ‘POST’, ‘header’ => ‘Content-type: application/x-www-form-urlencoded’, ‘content’ => $postdata ) ); $context = stream_context_create($opts); $result = file_get_contents(‘http://example.com/submit.php’, false, $context);

file_get_contents()通过post获取数据 2017年5月19日
;

1.wp_version_check Check WordPress version against the newest version. The WordPress version, PHP version, and Locale is sent. Checks against the WordPress server at api.wordpress.org server. Will only check if WordPress isn’t installing. 2.wp_update_plugins Check plugin versions against the latest versions hosted on WordPress.org. The WordPress version, PHP version, and Locale is sent along with a list of all plugins installed. Checks against the WordPress server at api.wordpress.org. Will only check if WordPress isn’t installing. 3.wp_update_themes Check theme versions ag…

wp-cron.php默认任务列表 2017年5月16日
;

整个目录设置权限777依然不行 wp-config.php添加如下代码却可以 define("FS_METHOD","direct"); define("FS_CHMOD_DIR", 0777); define("FS_CHMOD_FILE", 0777); 相关信息 https://codex.wordpress.org/Editing_wp-config.php

wordpress安装插件一直提示fpt登录 2017年5月12日