php抓数据包,php抓包代码

php编程语言可以解析tcp数据包(包括标志位,序列号,窗口长度)吗?

TCP协议头最少20个字节,包括以下的区域

专注于为中小企业提供成都网站建设、成都网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业乳山免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

TCP源端口(Source Port):16位的源端口其中包含初始化通信的端口。源端口和源IP地址的作用是

标示报问的返回地址。

TCP目的端口(Destination port):16位的目的端口域定义传输的目的。这个端口指明报文接收计算

机上的应用程序地址接口。

TCP序列号(序列码,Sequence Number):32位

TCP应答号(Acknowledgment Number):32位的序列号由接收端计算机使用,重组分段的报文成最初形式。,如果设置了ACK控制位,这个值表示一个准备接收的包的序列码。

php每天抓取数据并更新新

以前我用过querylist插件抓数据,服务器写和定时器,每天固定时间去运行脚本。朝这个方式试试

高并发下数据的更新,应该 update table xxx set num = num - 1 的方式,这种方式可以保证数据的正确性。

但是会出现 num 为负数的问题,如果库存为负数,显然是不合理的。

于是,需要将 num 字段设置为 无符号整型,这样就不会出现负数了,因为,如果减到负数,就会更新失败。

但是这种依然会造成很多无用的更新语句的执行,是不合理的。

于是,update table xxx set num = num - 1 where num 0,

这样当 num 等于0之后就不会去更新数据库了,减少了很多无用的开销。

这种方式被称作“乐观锁”

此外,对于抢红包这种非整数的操作,我们应该转换为整数的操作。

关于抢购超卖的控制

一般抢购功能是一个相对于正常售卖系统来说独立的子系统,这样既可以防止抢购时的高并发影响到正常系统,

也可以做到针对于抢购业务的特殊处理。

在后台设计一些功能,可以就昂正常的商品加入到抢购活动中并编辑成为抢购商品,写入到抢购商品表,当然

也可以把抢购商品表写入redis而不是数据表。并且在原商品表写入一个同样的商品(id相同,用于订单查看,

此商品不可购买)

如果是数据表,为了控制超卖,需要对表进行行锁,更新的时候带上 where goods_amount 0。

如果是redis,使用 hincrby 一个负数来减库存,并且 hincrby 会返回改变后的值,再来判断返回值是否大于0,

因为redis每个命令都是原子性的,这样不用锁表就可控制超卖。

php如何获得http post的数据?

PHP获取POST数据的几种方法:

方法1、最常见的方法是:$_POST['fieldname'];

说明:只能接收Content-Type:

application/x-www-form-urlencoded提交的数据。

方法2、file_get_contents("php://input");

说明:

允许读取

POST

的原始数据。

$HTTP_RAW_POST_DATA

比起来,它给内存带来的压力较小,并且不需要任何特殊的

php.ini

设置。

php://input

不能用于

enctype="multipart/form-data"。

方法3、$GLOBALS['HTTP_RAW_POST_DATA'];

说明:

总是产生

$HTTP_RAW_POST_DATA

变量包含有原始的

POST

数据。

此变量仅在碰到未识别

MIME

类型的数据时产生。

php如何获取xml数据包

//提取XML数据源

$xmlUrl= '';

echo $xmlUrl;

$curl= curl_init();

curl_setopt($curl, CURLOPT_URL, $xmlUrl);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);

curl_setopt($curl, CURLOPT_HEADER, 0);

$xmlData= curl_exec($curl);

curl_close($curl);

//判断XML编码

if(preg_match("/encoding\=[\'\"](.*?)[\'\"]/i", $xmlData, $encoding)){

$encoding = $encoding[1];

}else{

$encoding = mb_detect_encoding($xmlData, array('ASCII', 'GBK', 'GB2312', 'UTF-8', 'iso-8859-1'));

}

echo $encoding;

//转换XML编码

if($encoding){

$xmlData = preg_replace('/encoding\=[\'\"](.*?)[\'\"]/i', 'encoding="utf-8"', $xmlData);

switch(strtolower($encoding)){

case 'utf-8': break;

case 'iso-8859-1':

$xmlData = utf8_encode($xmlData);

break;

default:

$xmlData = iconv($encoding, 'UTF-8//IGNORE', $xmlData);

break;

}

}

$xmlData= simplexml_load_string($xmlData);

print_r($xmlData);

php怎么实现付费下载数据包权限

添加相应数据库字段,下载链接以php动态的形式获取不就可以了么

怎么抓包赶时间?

tcpdump能帮助我们捕捉并保存网络包,保存下来的网络包可用于分析网络负载情况,包可通过tcpdump命令解析,也可以保存成后缀为pcap的文件,使用wireshark等软件进行查看,下面我们就来看一个tcpdump实现24小时自动抓包实现例子.

安装tcpdump,代码如下:

# yum install tcpdump

脚本里有注释#diy的,表示下一行需自定义修改,脚本都放在home目录下,crontab里写:**/6***/bin/bash/home/monitor_dump.sh

**/6***/bin/bash/home/monitor_disk.sh

根据当磁盘空间的大小和流量的大小确定crontab里的时间间隔,因加了crontab要时间到才执行,为了现在执行,可执行:nohup sh /home/monitor_dump.sh

vi常用命令:

# vi /etc/crontab

insert进入编辑状态,ESC进入命令状态:wq保存退出:q退出,修改后要执行 crontab /etc/crontab.

main_dump.sh (抓包的主程序),每隔1分钟通过死循环检测,让程序不断的去抓包,考虑到抓包的结果可能太大分析工具无法打开分析,所以每个数据包大小限制约为100M.并设定了前一个包抓完,间隔5秒,开始进行下一轮抓包.

每天的数据包放在/data下以日期命名的目录如:/data/2010-03-08,并进行压缩存储,包的命令格式为:yyyy-mm-dd@hhmmss-hhmmss.pcap.gz;其中yyyy-mm-dd表示日期,第一个hhmmss表示开始抓包的时分秒,第二个hhmmss表示抓包结束的时分秒,代码如下:#!/bin/bash

#scriptname:/home/main_dump.sh

while:

do

STIME=`date+%F"@"%H%M%S`

DATE_DIR=`date+%F`

if[!-d/data/$DATE_DIR];then

mkdir-p/data/$DATE_DIR

fi

#diy#unit:byte;100MB

MAXSIZE=100000000

#diy

DUMPPID=`ps-ef|grep"tcpdump-ieth0"|greppcap|awk'{print$2}'`

if[!"$DUMPPID"];then

#diy

/usr/sbin/tcpdump-ieth0host113.105.152.180-w/data/$DATE_DIR/$STIME.pcap-s0

fi

sleep1

#diy

DUMPPID=`ps-ef|grep"tcpdump-ieth0"|greppcap|awk'{print$2}'`

PACKSIZE=`ls-l/data/$DATE_DIR|grep"$STIME.pcap"|awk'{print$5}'`

while["$PACKSIZE"-lt"$MAXSIZE"];do

PACKSIZE=`ls-l/data/$DATE_DIR|grep"$STIME.pcap"|awk'{print$5}'`//phpfensi.com

sleep1m

done

kill-9$DUMPPID

ETIME=`date+%H%M%S`

mv/data/$DATE_DIR/$STIME.pcap/data/$DATE_DIR/$STIME-$ETIME.pcap

gzip/data/$DATE_DIR/*.pcap

sleep5

done

monitor_dump.sh(监控抓包脚本)

为了保证抓包主程序能健康运行,通过crontab程序来调度monitor_dump.sh,监控抓包主程序是事正常运行,如果没有运行,则启动它,代码如下:#!/bin/bash

#scriptname:/home/monitor_dump.sh

DATE_DIR=`date+%F`

STIME=`date+%F"@"%H%M%S`

MAINDUMP=`ps-elf|grepmaindump|grep-vgrep`

#diy

DUMPPID=`ps-ef|grep"tcpdump-ieth0"|greppcap`

#checkmainprogrammestatus

if[!"$MAINDUMP"];then

/bin/bash/home/maindump.sh

fi

if[!"$DUMPPID"];then

#diy

/usr/sbin/tcpdump-ieth0host113.105.152.180-w/data/$DATE_DIR/$STIME.pcap-s0

fi

monitor_disk.sh(监控硬盘空间)

监控磁盘的空闲空间,当磁盘的使用率大于等于30%时(可设置),会自动删除最早一天抓到的所在数据包,以保证磁盘的空闲空间,代码如下:#!/bin/bash

#scriptname:/home/monitor_disk.sh

#diy

FREEDISK=`df-h|grep"/dev/sda3"|awk'{print$5}'|awk-F%'{print$1}'`

HEADMOST=`ls-l/data|grep^d|awk'{print$NF}'|sort|head-n1`


分享标题:php抓数据包,php抓包代码
URL地址:http://hbruida.cn/article/hesosj.html