;

1.什么是 html 标签,html 实体 . html标签 描述 html实体 great than &gt; . 2.为什么需要转换 比如我们要在浏览器里显示代码,浏览器会把它当作 html 标签语言直接执行,解决方法就是将 html 标签转变为 html 实体再编写到代码中. 比如我们要显示<script>alert(1)</script>, 那么我们的代码中应该这样写:&lt;script&gt;alert(1)&lt;/script&gt;。 既然代码&lt;script&gt;alert(1)&lt;/script&gt;显示的是<script>alert(1)</script>, 那么如果要显示&lt;script&gt;alert(1)&lt;/script&gt;; 又应该写怎么样的代码呢? 道理很简单,一段文本,如果在页面中的显示跟代码不一致,那说明肯定是里面包含了html的关键字,比如上一段代码中就包含了关键字&,如果想要在浏览器中显示&(html关键字),则需要在代码中用它对应的实体来替换掉,&的实体为&amp;, 因此要显示&a…

html标签与实体详细说明 2017年8月23日
;

不懂正则引擎原理的情况下,同样可以写出满足需求的正则,但是不知道原理,却很难写出高效且没有隐患的正则。所以对于经常使用正则,或是有兴趣深入学习正则的人,还是有必要了解一下正则引擎的匹配原理的。 1.为什么要了解引擎匹配原理 一个个音符杂乱无章的组合在一起,弹奏出的或许就是噪音,同样的音符经过作曲家的手,就可以谱出非常动听的乐曲,一个演奏者同样可以照着乐谱奏出动听的乐曲,但他/她或许不知道该如何去改变音符的组合,使得乐曲更动听。 作为正则的使用者也一样,不懂正则引擎原理的情况下,同样可以写出满足需求的正则,但是不知道原理,却很难写出高效且没有隐患的正则。所以对于经常使用正则,或是有兴趣深入学习正则的人,还是有必要了解一下正则引擎的匹配原理的。 2.正则表达式引擎 正则引擎大体上可分为不同的两类:DFA和NFA,而NFA又基本上可以分为传统型NFA和POSIX NFA。 DFA Deterministic finite automaton 确定型有穷自动机 NFA Non-deterministic finite automaton 非确定型有穷自动机 Traditional NFA POSIX NFA DFA引擎因为不需要回溯,所以匹配快速,但不支持捕获组,所以也就不支持反向引用和$number这种引用方式,目前使用DFA引擎的语言和工具主要有…

NFA引擎匹配原理 2017年8月23日
;

零宽断言 环视/预查 反向引用 环视/预查(lookaround) (?<=…),(?<!…),(?=…),(?!…) 忽略量化词/非贪婪模式 (??,*?,+?,{m,n}?,{m,}?) 1.后向引用 使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。默认情况下,每个分组会自动拥有一个组号,规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。 组号分配说明: ①.分组0对应整个正则表达式 ②.实际上组号分配过程是要从左向右扫描两遍的:第一遍只给未命名组分配,第二遍只给命名组分配--因此所有命名组的组号都大于未命名的组号 ③.你可以使用(?:exp)这样的语法来剥夺一个分组对组号分配的参与权. 后向引用用于重复搜索前面某个分组匹配的文本。例如,\1代表分组1匹配的文本。 \b(\w+)\b\s+\1\b可以用来匹配重复的单词,像go go, 或者kitty kitty。这个表达式首先是一个单词,也就是单词开始处和结束处之间的多于一个的字母或数字(\b(\w+)\b),这个单词会被捕获到编号为1的分组中,然后是1个或几个空白符(\s+),最后是分组1中捕获的内容(也就是前面匹配的…

正则表达式(二)-进阶 2017年8月23日
;
魔术,切手指 2017年8月22日
;

结构 定界符:多种都可以,常用为// 原子:最少的一个匹配单位(放在定界符中),在一个正则表达式中,至少要有一个原子 元字符:元字符不能单独使用,修饰原子,是用来扩展原子功能和限定功能的,(写在定界符号中) 模式修正符号:修正,对模式(正则)修正,(写在定界符号右边) 备注: 1.正则表达式为一个字符串,单引号双引号有区别,优先使用单引号(双引号内认转义字符,单引号内不认转义字符) 2.定界符不仅局限于“//”。除了字母,数字和斜线“\”以外的任何字符都可以作为定界符,像“#”,“|”,“!”等都可以的。 3.打印字符指键盘上所有可以显示出来的字符,非打印值无法显示的字符,比如,回车,换行 4.\转义字符, (1)可以将有意义的字符转成没有意义的原子字符(将有意义变为原子)。 (2)可以将没有意义的字符转成有意义的原子(比如:\t,tab键) (3)所有没有意义的字符,加了转义也没有意义的,可加可不加(比如:/a/和/\a/,/@/和/\@/,/9/和/\9/),php有个函数专门识别那些属于有意义的字符 5.常用非打印字符 非打印字符 含义描述 \cx 匹配由x指明的控制字符。如\cM匹配一个Control-M或回车符。x的值必须为A~Z或a~z之一 \f 匹配一个换页符。等价于\x0c或\cL \n 匹配一个换行符。等价于\x0a或\cJ…

正则表达式(一)-基础 2017年8月21日
;

Cookie的机制 Cookie是浏览器(User Agent)访问一些网站后,这些网站存放在客户端的一组数据,用于使网站等跟踪用户,实现用户自定义功能。 Cookie的Domain和Path属性标识了这个Cookie是哪一个网站发送给浏览器的;Cookie的Expires属性标识了Cookie的有 效时间,当Cookie的有效时间过了之后,这些数据就被自动删除了。 如果不设置过期时间,则表示这个Cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,Cookie就消失了。这种生命期为浏览会话期的 Cookie被称为会话Cookie。会话Cookie一般不保存在硬盘上而是保存在内存里。如果设置了过期时间,浏览器就会把Cookie保存到硬盘 上,关闭后再次打开浏览器,这些Cookie依然有效直到超过设定的过期时间。存储在硬盘上的Cookie可以在不同的浏览器进程间共享,比如两个IE窗 口。而对于保存在内存的Cookie,不同的浏览器有不同的处理方式。 Session的机制 Session是存放在服务器端的类似于HashTable结构(每一种Web开发技术的实现可能不一样,下文直接称之为HashTable)来存放用户数据,当浏览器第一次发送请求时,服务器自动生成了一个HashTable和一个Session ID用来唯一标识这个HashTable…

登录记住密码功能的实现 2017年8月19日
;

遗忘曲线由德国心理学家艾宾浩斯(H.Ebbinghaus)研究发现,描述了人类大脑对新事物遗忘的规律。人体大脑对新事物遗忘的循序渐进的直观描述,人们可以从遗忘曲线中掌握遗忘规律并加以利用,从而提升自我记忆能力。该曲线对人类记忆认知研究产生了重大影响。 德国心理学家艾宾浩斯(H.Ebbinghaus)研究发现,遗忘在学习之后立即开始,而且遗忘的进程并不是均匀的。最初遗忘速度很快,以后逐渐缓慢。

遗忘曲线 2017年8月19日
;

白名单,以deny为最后标准,有隐含的拒绝所有语句存在。 Order Allow,Deny 黑名单,以allow为最后标准,有隐含的允许所有语句存在。 Order Deny,Allow http://www.nowamagic.net/academy/detail/1225509

order allow,deny 2017年8月18日
;

需要有mysql_error()反馈信息 http://blog.csdn.net/ysynhtt/article/details/45115849 http://websec.ca/kb/sql_injection http://www.exploit-db.com/wp-content/themes/exploit/docs/33253.pdf

通过inser into进行注入 2017年8月16日
;

出于好奇,想看看取消root账号的全局权限是什么效果,结果竟然真的可以哦 sudo killall mysqld //干掉所有mysql进程 mysqld_safe –skip-grant-tables & //进入mysql安全模式 此时进入了mysql的console(控制台) mysql -p Enter password: //接着提示输入密码,此时会创建新密码,以前的密码依然可以用 接着进入了mysql控制台 mysql>use mysql //选择数据库 mysql>grant all privileges on *.* to baidu@localhost identified by ‘1’; //@前为账号名 mysql>flush privileges //更新权限 重启 service mysql restart

mysql误操作导致root账号权限丢失 2017年8月10日
;

按小时显示 select timestamp,count(*) as test from browserinfo group by date_format(timestamp, ‘%Y-%m-%d %H ‘); 查询今天,昨天,近7天,近30天,本月,上一月 select * from `browserinfo` where date_format(`timestamp`,’%Y-%m-%d’) = date_format(now(),’%Y-%m-%d’); //当天 select * from `browserinfo` where to_days(date_format(`timestamp`,’%Y-%m-%d’)) = to_days(now()); //当天,效果同上一条 select * from `browserinfo` where to_days(`timestamp`) = to_days(now()); //当天,效果同上两条 select * from `browserinfo` where to_days(now())-to_days(`timestamp`) <= 1; //昨天 select * from `browserinfo` where date_sub(curdate(), INTERVAL 7…

mysql 时间戳 按周、日、月 统计方法 2017年8月8日
;

从5.2版本开始,PHP原生提供json_encode()和json_decode()函数,前者用于编码,后者用于解码。 一、json_encode() <?php $arr = array (‘a’=>1,’b’=>2,’c’=>3,’d’=>4,’e’=>5); echo json_encode($arr); ?> 输出 {"a":1,"b":2,"c":3,"d":4,"e":5} 再看一个对象转换的例子: $obj->body = ‘another post’; $obj->id = 21; $obj->approved = true; $obj->favorite_count = 1; $obj->status = NULL; echo json_encode($obj); 输出 {  "body":"another post",  "id":21,  "approved":true,  "favorite_count":1,  "status"…

json_encode及json_decode用法说明 2017年8月1日
;
mysql 去除重复数据 2017年7月29日
;

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日