[函数安全] 关于strncpy函数比strcpy更安全的学习。
Unix/LinuxC技术 jack 2014-1-16 10:05
C/C++中的strncpy()函数功能为将第source串的前n个字符拷贝到destination串,原型为:
char * strncpy ( char * destination, const char * source, size_t num );
各个参数的含义显而易见,其中返回值与destination相同。
这个函数会出现三种情况:
1、num<source串的长度(包含最后的'\0'字符):那么该函数将会拷贝source的前num个字符到destination串中(不会自动为destination串加上结尾的'\0'字符);
2、num=source串的长度(包含最后的'\0'字符):那么该函数将会拷贝source的全部字符到destination串中(包括source串结尾的'\0'字符);
3、num>source串的长度(包含最后的'\0'字符):那么该函数将会拷贝source的全部字符到destination串中(包括source串结尾的'\0'字符),并且在destination串的结尾继续加上'\0'字符,直到拷贝的字符总个数等于num为止。
————————————————————————————————————
三种情况,自己做个实践:
情况一:
代码:
编译:
[root@localhost strncpy]# make strncpy
cc strncpy.c -o strncpy
运行:
[root@localhost strncpy]# ./strncpy
abc
————————————————————————————————————
情况二:
代码:
运行:
[root@localhost strncpy]# ./strncpy
abcdefghi
————————————————————————————————————
情况三:
代码:
运行:
[root@localhost strncpy]# ./strncpy
abcd
参考:http://www.cnblogs.com/unimous/archive/2012/03/05/2381151.html
char * strncpy ( char * destination, const char * source, size_t num );
各个参数的含义显而易见,其中返回值与destination相同。
这个函数会出现三种情况:
1、num<source串的长度(包含最后的'\0'字符):那么该函数将会拷贝source的前num个字符到destination串中(不会自动为destination串加上结尾的'\0'字符);
2、num=source串的长度(包含最后的'\0'字符):那么该函数将会拷贝source的全部字符到destination串中(包括source串结尾的'\0'字符);
3、num>source串的长度(包含最后的'\0'字符):那么该函数将会拷贝source的全部字符到destination串中(包括source串结尾的'\0'字符),并且在destination串的结尾继续加上'\0'字符,直到拷贝的字符总个数等于num为止。
————————————————————————————————————
三种情况,自己做个实践:
情况一:
代码:
编译:
[root@localhost strncpy]# make strncpy
cc strncpy.c -o strncpy
运行:
[root@localhost strncpy]# ./strncpy
abc
————————————————————————————————————
情况二:
代码:
运行:
[root@localhost strncpy]# ./strncpy
abcdefghi
————————————————————————————————————
情况三:
代码:
运行:
[root@localhost strncpy]# ./strncpy
abcd
参考:http://www.cnblogs.com/unimous/archive/2012/03/05/2381151.html
[实践OK]linux中fork同时创建多个子进程的方法
Unix/LinuxC技术 jack 2014-1-15 14:37
子进程和主进程得判断一下,否则会运行两次:
cat Makefile
malloc:malloc.c
gcc -g -o malloc -Wall malloc.c
gcc -g -o fork -Wall fork.c
gcc -g -o forkn -Wall forkn.c
clean:
rm -rf malloc
rm -rf fork
rm -rf forkn
查看内存:
ps -o 'pid,ppid,sz,vsz,rss,cmd' -C forkn
=============================================================================
linux中fork同时创建多个子进程的方法
正确的使用Linux中的用fork()由一个父进程创建同时多个子进程 的格式如下:
int status,i;
for (i = 0; i < 10; i++)
{
status = fork();
if (status == 0 || status == -1) break;//每次循环时,如果发现是子进程就直接从创建子进程的循环中跳出来,不让你进入循环,这样就保证了每次只有父进程来做循环创建子进程的工作
}
if (status == -1)
{
//error
}
else if (status == 0) //每个子进程都会执行的代码
{
//sub process
}
else
{
//parent process
}
来自:http://blog.sina.com.cn/s/blog_605f5b4f0100x444.html
cat Makefile
malloc:malloc.c
gcc -g -o malloc -Wall malloc.c
gcc -g -o fork -Wall fork.c
gcc -g -o forkn -Wall forkn.c
clean:
rm -rf malloc
rm -rf fork
rm -rf forkn
查看内存:
ps -o 'pid,ppid,sz,vsz,rss,cmd' -C forkn
=============================================================================
linux中fork同时创建多个子进程的方法
正确的使用Linux中的用fork()由一个父进程创建同时多个子进程 的格式如下:
int status,i;
for (i = 0; i < 10; i++)
{
status = fork();
if (status == 0 || status == -1) break;//每次循环时,如果发现是子进程就直接从创建子进程的循环中跳出来,不让你进入循环,这样就保证了每次只有父进程来做循环创建子进程的工作
}
if (status == -1)
{
//error
}
else if (status == 0) //每个子进程都会执行的代码
{
//sub process
}
else
{
//parent process
}
来自:http://blog.sina.com.cn/s/blog_605f5b4f0100x444.html
[网站注入] 本博客被注入,本想关闭Bo-blog评论及留言部分的地址和邮箱栏。应该是PHP的SQL注入攻击的技术实现注入,后预防措施是打上补丁,修改了bo-blog的密码。
Php/Js/Shell/Go jack 2014-1-14 16:38
背景:是哪个高人,给我sql注入了,我看了下面这篇文章,但没看明白,请在留言里指出,Thanks。
http://blog.csdn.net/phpfenghuo/article/details/18178519
_____________________________________________________________________________
一、我试着想关闭bo-blog里的评论功能(以防止注入):
如何关闭Bo-blog评论及留言部分的地址和邮箱栏
修改当前模板的elements.php文件,推荐用editplus。
1、查找并删除以下两处。
{replieremail}
{replierhomepage}
2、查找到
{$lnc[170]} <input name="v_repurl" id="v_repurl" type="text" size="12" class="text" value="{repurl}" />
{$lnc[248]} {if_neednopsw_end}{additional}<input name="v_repemail" id="v_repemail" type="text" size="12" class="text" value="{repemail}" />
将其中两处type=”text”改为type=”hidden”,并去掉{$lnc[170]}和{$lnc[248]}{repurl},{repemail},及{if_neednopsw_end}{additiona }。
附:去掉密码栏的方法
修改当前模板的elements.php文件,查找到
{$lnc[133]} <input name="v_password" id="v_password" type="password" size="12" class="text" value="{ password}" {disable_password}/> {$lnc[247]}
去掉:{$lnc[133]} 和 {$lnc[247]}还有{password},将type=”password”改为type=”hidden”
参考资料:http://www.18hao.net/archives/611
_____________________________________________________________________________
二、但是想了一下,有可能是通过[ubb]注入的,于是先打一下补丁,暂不关评论:
http://www.bo-blog.com/weblog/security--notice-20110312/
2.1.1正式版用户请下载附件中的补丁程序,解压后上传、覆盖原先的文件。打完补丁后,请检查后台页脚的版本号是否为2.1.1.3626.3。
三、修改登录密码:
后台->用户管理->用户管理->搜索自己的用户名->找到后再修改一下密码混入数字字母大小写符号等即可。
Bo-Blog SQL注入漏洞
Bo-Blog是一套基于PHP和MySQL的免费博客系统软件,该软件包括留言本、表情、天气等。本周,该产品被披露存在一个综合评级为“高危”的SQL注入漏洞。由于程序未能正确过滤用户提交的输入,攻击者利用漏洞可控制应用程序,访问或修改数据。目前,互联网上已经出现了针对该漏洞的攻击代码,厂商尚未发布该漏洞的修补程序。CNVD提醒广大用户随时关注厂商主页以获取最新版本。
参考链接:http://www.cnvd.org.cn/flaw/show/CNVD-2013-12867
http://www.cnvd.org.cn/webinfo/show/3289
http://blog.csdn.net/phpfenghuo/article/details/18178519
_____________________________________________________________________________
一、我试着想关闭bo-blog里的评论功能(以防止注入):
如何关闭Bo-blog评论及留言部分的地址和邮箱栏
修改当前模板的elements.php文件,推荐用editplus。
1、查找并删除以下两处。
{replieremail}
{replierhomepage}
2、查找到
{$lnc[170]} <input name="v_repurl" id="v_repurl" type="text" size="12" class="text" value="{repurl}" />
{$lnc[248]} {if_neednopsw_end}{additional}<input name="v_repemail" id="v_repemail" type="text" size="12" class="text" value="{repemail}" />
将其中两处type=”text”改为type=”hidden”,并去掉{$lnc[170]}和{$lnc[248]}{repurl},{repemail},及{if_neednopsw_end}{additiona }。
附:去掉密码栏的方法
修改当前模板的elements.php文件,查找到
{$lnc[133]} <input name="v_password" id="v_password" type="password" size="12" class="text" value="{ password}" {disable_password}/> {$lnc[247]}
去掉:{$lnc[133]} 和 {$lnc[247]}还有{password},将type=”password”改为type=”hidden”
参考资料:http://www.18hao.net/archives/611
_____________________________________________________________________________
二、但是想了一下,有可能是通过[ubb]注入的,于是先打一下补丁,暂不关评论:
http://www.bo-blog.com/weblog/security--notice-20110312/
2.1.1正式版用户请下载附件中的补丁程序,解压后上传、覆盖原先的文件。打完补丁后,请检查后台页脚的版本号是否为2.1.1.3626.3。
三、修改登录密码:
后台->用户管理->用户管理->搜索自己的用户名->找到后再修改一下密码混入数字字母大小写符号等即可。
Bo-Blog SQL注入漏洞
Bo-Blog是一套基于PHP和MySQL的免费博客系统软件,该软件包括留言本、表情、天气等。本周,该产品被披露存在一个综合评级为“高危”的SQL注入漏洞。由于程序未能正确过滤用户提交的输入,攻击者利用漏洞可控制应用程序,访问或修改数据。目前,互联网上已经出现了针对该漏洞的攻击代码,厂商尚未发布该漏洞的修补程序。CNVD提醒广大用户随时关注厂商主页以获取最新版本。
参考链接:http://www.cnvd.org.cn/flaw/show/CNVD-2013-12867
http://www.cnvd.org.cn/webinfo/show/3289
背景:常常很多人对http协议不是很清楚,都干了很多年了,这块早期原始的BBS什么的都是输入命令看帖子,开发后台程序必须掌握http协议。
备注:输入“GET / HTTP/1.1”,表示向该域名索要首页根文件,使用的协议是HTTP的1.1版本。
当然也可更直接这样telnet:
阅读全文
备注:输入“GET / HTTP/1.1”,表示向该域名索要首页根文件,使用的协议是HTTP的1.1版本。
当然也可更直接这样telnet:
阅读全文
Windows7系统如何调节屏幕亮度
方法一:
1、开始-控制面板
2、点击 系统和安全
3、点击 电源选项
4、拖动滚动条调节屏幕亮度
方法二:
也可以按Win+X组合键,显示器亮度:拖动滚动条调节屏幕亮度。
方法一:
1、开始-控制面板
2、点击 系统和安全
3、点击 电源选项
4、拖动滚动条调节屏幕亮度
方法二:
也可以按Win+X组合键,显示器亮度:拖动滚动条调节屏幕亮度。
Linux下telnet 如何退出
Php/Js/Shell/Go jack 2014-1-1 21:24
背景:在Linux进行socket等编程,或对某些应用telnet时会出现直接quit退出无反应的情况,折腾了半天还没有退出telnet,于是有一个退出回话的键至关重要。
很简单:ctrl+],然后再输入q就可以退出了。.
root@192.168.137.128:~# telnet localhost 1987
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
你好
。。。//无反应
quit //也无法退出
^] //此时的退出方法:ctrl + ] 回车
telnet>
quit //退出会话了,再quit即可退出,也可直接输入q简写。
telnet> quit
Connection closed.
来自:http://www.cnblogs.com/hnrainll/archive/2012/02/04/2337928.html
参考:
http://blog.csdn.net/wei801004/article/details/4531664
http://www.baidu.com/link?url=qvpA6iPv82k_sInhXaU6hSCj45rQAQDfhmnNqZXhOduSeGwtk2yRu4H_Ee0zXMWT
很简单:ctrl+],然后再输入q就可以退出了。.
root@192.168.137.128:~# telnet localhost 1987
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
你好
。。。//无反应
quit //也无法退出
^] //此时的退出方法:ctrl + ] 回车
telnet>
quit //退出会话了,再quit即可退出,也可直接输入q简写。
telnet> quit
Connection closed.
来自:http://www.cnblogs.com/hnrainll/archive/2012/02/04/2337928.html
参考:
http://blog.csdn.net/wei801004/article/details/4531664
http://www.baidu.com/link?url=qvpA6iPv82k_sInhXaU6hSCj45rQAQDfhmnNqZXhOduSeGwtk2yRu4H_Ee0zXMWT
使用dmesg查看Linux IO占用较高的程序,它就是tail -f /var/log/messages。
Unix/LinuxC技术 jack 2013-12-29 20:35
tail -f /var/log/messages
环境: Ubuntu
1. 开启IO监控
sudo sysctl vm.block_dump=1
2. IO监控开启后,系统将记录程序对所有硬盘块的访问,通过dmesg查看
dmesg
[442825.284270] mysqld(11600): READ block 6676888 on xvdb2 (8 sectors)
[442825.289893] mysqld(11600): READ block 11543240 on xvdb2 (8 sectors)
[442825.291317] mysqld(11600): READ block 11543248 on xvdb2 (24 sectors)
3. 使用awk汇总,得到占用磁盘最多的进程
dmesg |awk -F " " '{print $2}'|sort|uniq -c|sort -rn|head -n 100
1564 mysqld(11600):
994 python(11474):
302 nginx(6171):
136 mysqld(29743):
126 mysqld(15528):
71 ntpd(772):
62 mysqld(16837):
4. 调试完毕后,别忘了关闭IO监控。
sudo sysctl vm.block_dump=1
摘自:http://www.luochunhui.com/linux-io-dmesg/
参考:http://blog.slogra.com/post-317.html
实践:
[root@my htdocs]# vi /proc/sys/vm/block_dump
[root@my htdocs]# sysctl vm.block_dump=1
vm.block_dump = 1
[root@my htdocs]# dmesg |awk -F: '{print $1}'|sort|uniq -c|sort -rn|head -n 10
195 ACPI
194 pci 0000
63 alloc kstat_irqs on node 0
53 pnp 00
48 ioatdma 0000
34 igb 0000
34 EDAC sbridge
29 flush-253
26 SRAT
24 pci_bus 0000
[root@my htdocs]# sysctl vm.block_dump=0
vm.block_dump = 0
环境: Ubuntu
1. 开启IO监控
sudo sysctl vm.block_dump=1
2. IO监控开启后,系统将记录程序对所有硬盘块的访问,通过dmesg查看
dmesg
[442825.284270] mysqld(11600): READ block 6676888 on xvdb2 (8 sectors)
[442825.289893] mysqld(11600): READ block 11543240 on xvdb2 (8 sectors)
[442825.291317] mysqld(11600): READ block 11543248 on xvdb2 (24 sectors)
3. 使用awk汇总,得到占用磁盘最多的进程
dmesg |awk -F " " '{print $2}'|sort|uniq -c|sort -rn|head -n 100
1564 mysqld(11600):
994 python(11474):
302 nginx(6171):
136 mysqld(29743):
126 mysqld(15528):
71 ntpd(772):
62 mysqld(16837):
4. 调试完毕后,别忘了关闭IO监控。
sudo sysctl vm.block_dump=1
摘自:http://www.luochunhui.com/linux-io-dmesg/
参考:http://blog.slogra.com/post-317.html
实践:
[root@my htdocs]# vi /proc/sys/vm/block_dump
[root@my htdocs]# sysctl vm.block_dump=1
vm.block_dump = 1
[root@my htdocs]# dmesg |awk -F: '{print $1}'|sort|uniq -c|sort -rn|head -n 10
195 ACPI
194 pci 0000
63 alloc kstat_irqs on node 0
53 pnp 00
48 ioatdma 0000
34 igb 0000
34 EDAC sbridge
29 flush-253
26 SRAT
24 pci_bus 0000
[root@my htdocs]# sysctl vm.block_dump=0
vm.block_dump = 0
背景:今天房东家的电脑出现:Error: Cannot Load file (Code: 5555H),通过N年前的Ghost光盘进行DH4(是一键划分成4个分区所用的Ghost 文件)进行分区也卡住了,时而出现文字输入都有问题。
出现错误提示error:cannot load file (code:5555h)。
1.在网上找了作为记录,输入 fdisk/MBR也不行:
出错原因:普通的Ghost 系统安装盘无法重建磁盘MBR(主引导记录),使得Ghost安装盘在一些带有隐藏分区的硬盘上无法加载文件!
解决方法:
用纯净的WindowsXP 原版安装光盘来分区并重装系统,该过程中会建立新的硬盘MBR。
2.进入xp PE后,也看不到硬盘。
最后,只能认定硬盘坏了,但是出现过一次在dos下可以看到内容,但是相当不稳定,听房东说其儿子时常在开机时断电源的情况,估计这样折腾多了,出了毛病罢。
出现错误提示error:cannot load file (code:5555h)。
1.在网上找了作为记录,输入 fdisk/MBR也不行:
出错原因:普通的Ghost 系统安装盘无法重建磁盘MBR(主引导记录),使得Ghost安装盘在一些带有隐藏分区的硬盘上无法加载文件!
解决方法:
用纯净的WindowsXP 原版安装光盘来分区并重装系统,该过程中会建立新的硬盘MBR。
2.进入xp PE后,也看不到硬盘。
最后,只能认定硬盘坏了,但是出现过一次在dos下可以看到内容,但是相当不稳定,听房东说其儿子时常在开机时断电源的情况,估计这样折腾多了,出了毛病罢。
PHP的Session数据同步问题
Php/Js/Shell/Go jack 2013-12-27 14:21
近来公司某个域名流量大涨,发现一个外部QQ登录的接口经常失败,用户登录总是不成功。经过排查发现是登录的第一步需要保存一个token_secret。当时的程序员编写此代码时直接用了$_SESSION来保存token_secret。这里在并发量小时问题不大,并发大了之后极有可能会出问题。
假设A,B两个请求同时出发,A,B同时session_start,读取到了一个$_SESSION的值。当A完成请求写入$_SESSION,但B还没有完成请求,B完成请求后再写$_SESSION,就会覆盖A所设置的值。
类似的数据同步问题其实很多的,比如file_put_contents写PHP的Cache文件,如果不加LOCK_EX就可能会存在同步问题,当一个进程写file时,只写到一半有另外的进程去require此文件,这时就会因为文件不完整,导致PHP语法错误。所以涉及到同时读写同一个文件或数据时一定要加锁,否则在高并发的情况下会产生严重错误。
来自韩天峰兄弟的博客:http://rango.swoole.com/archives/74
假设A,B两个请求同时出发,A,B同时session_start,读取到了一个$_SESSION的值。当A完成请求写入$_SESSION,但B还没有完成请求,B完成请求后再写$_SESSION,就会覆盖A所设置的值。
类似的数据同步问题其实很多的,比如file_put_contents写PHP的Cache文件,如果不加LOCK_EX就可能会存在同步问题,当一个进程写file时,只写到一半有另外的进程去require此文件,这时就会因为文件不完整,导致PHP语法错误。所以涉及到同时读写同一个文件或数据时一定要加锁,否则在高并发的情况下会产生严重错误。
来自韩天峰兄弟的博客:http://rango.swoole.com/archives/74
Kiss - 用Php扩展实现的简单框架
Php/Js/Shell/Go jack 2013-12-27 14:20
http://blog.chinaunix.net/uid-380521-id-2412387.html
http://www.wumii.com/item/A0g3IA7a
实践改写了一下:
http_status.sh
sites.txt
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
crontab:
#Add mytv's Log forbbiden PHP must be writeable error Test
59 23 * * * /bin/bash /home/xiangdong/crontab/mkdirMytvLogFolder.sh
0 0 * * * /bin/bash /home/xiangdong/curl_test_mytv/http_status.sh
___________________________________________________________________________________
在shell中使用curl命令,取得网站的http状态码。
例子:
调用示例:
附, Shell下curl的使用。
curl是一个访问url的工具,可以用他构造http request报文,且可以解析服务器返回的http response,额外还支持cookie特性,可以用curl完成web浏览器的基本功能。
当然curl还支持HTTPS/FTP/FTPS/TELNET/LDAP等协议。
本文只介绍下curl强大的HTTP功能。
通用语法:
curl [option] [URL...]
在处理URL时其支持类型于SHELL的名称扩展功能,如http://www.jbxue.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html可以生成多个期望的URL
curl的选项功能:
不带任何参数时 curl 将返回指定url中的数据并打印在屏幕上
-o out 将指定curl返回保存为out文件,内容从html/jpg到各种MIME类型文件
-O 按服务器上的名称保存下载的文件
-r/--range from-to 下载指定range内的数据
-C 在保存文件时进行续传
-A/--user-agent <ua> 指定发送请求的用户代理,例如:curl -A My-Agent/1.0.0 www.jbxue.com
-x ip:port 指定使用的http代理,例如:curl -x 192.168.1.1:8080 www.jbxue.com
-D head.txt 将服务器的返回的header保存为文件,头部的cookie也可被保存,例如:curl -D header.txt www.jbxue.com
-c <file> 保存服务器的cookie文件
-b/--cookie <name=data> 向服务器提交cookie,若无=则name视为文件名,例如:curl -b cookie.txt www.jbxue.com
-e url 设置引用头的值
-T localfile 向服务器PUT文件 例如:curl -T 1.mp3 www.jbxue.com/upload.php
-d <key=value> 向服务器POST表单数据 例如:curl -d "order=111&count=2" http://www.jbxue.com/buy
-F <key=value> 向服务器POST表单,例如:curl -F "web=@index.html;type=text/html" url.com
如果希望从本地文件中获取表单数据,则在文件名前加@ ,例如:curl -d @data.xml http://www.jbxue.com
若希望从标准输入获取则用curl -d - http://www.jbxue.com
-E cert.pem 指定本地证书
-H <header:value> 为HTTP请求设置任意header及值。如curl -H "Connection:keep-alive" http://www.jbxue.com
-I 构造一个HEAD请求
-X/--request method 用户定义的HTTP请求方法名如 curl -X GET www.baidu.com
--compressed 采用压缩方式接收返回数据
--connect-timeout <s> 设置超时时间
-v 详细输出,包含请求和响应的首部
--retry num
--retry timeo 指定重试的次数和间隔
--tcp-nodelay 打开TCP_NODELAY选项 不进行捎带确认
环境 变量:http_proxy [protocol://]<host>[:port]
来自:http://www.jbxue.com/article/curl_http_M1hclL89Ps3f.html
http_status.sh
sites.txt
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
crontab:
#Add mytv's Log forbbiden PHP must be writeable error Test
59 23 * * * /bin/bash /home/xiangdong/crontab/mkdirMytvLogFolder.sh
0 0 * * * /bin/bash /home/xiangdong/curl_test_mytv/http_status.sh
___________________________________________________________________________________
在shell中使用curl命令,取得网站的http状态码。
例子:
调用示例:
附, Shell下curl的使用。
curl是一个访问url的工具,可以用他构造http request报文,且可以解析服务器返回的http response,额外还支持cookie特性,可以用curl完成web浏览器的基本功能。
当然curl还支持HTTPS/FTP/FTPS/TELNET/LDAP等协议。
本文只介绍下curl强大的HTTP功能。
通用语法:
curl [option] [URL...]
在处理URL时其支持类型于SHELL的名称扩展功能,如http://www.jbxue.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html可以生成多个期望的URL
curl的选项功能:
不带任何参数时 curl 将返回指定url中的数据并打印在屏幕上
-o out 将指定curl返回保存为out文件,内容从html/jpg到各种MIME类型文件
-O 按服务器上的名称保存下载的文件
-r/--range from-to 下载指定range内的数据
-C 在保存文件时进行续传
-A/--user-agent <ua> 指定发送请求的用户代理,例如:curl -A My-Agent/1.0.0 www.jbxue.com
-x ip:port 指定使用的http代理,例如:curl -x 192.168.1.1:8080 www.jbxue.com
-D head.txt 将服务器的返回的header保存为文件,头部的cookie也可被保存,例如:curl -D header.txt www.jbxue.com
-c <file> 保存服务器的cookie文件
-b/--cookie <name=data> 向服务器提交cookie,若无=则name视为文件名,例如:curl -b cookie.txt www.jbxue.com
-e url 设置引用头的值
-T localfile 向服务器PUT文件 例如:curl -T 1.mp3 www.jbxue.com/upload.php
-d <key=value> 向服务器POST表单数据 例如:curl -d "order=111&count=2" http://www.jbxue.com/buy
-F <key=value> 向服务器POST表单,例如:curl -F "web=@index.html;type=text/html" url.com
如果希望从本地文件中获取表单数据,则在文件名前加@ ,例如:curl -d @data.xml http://www.jbxue.com
若希望从标准输入获取则用curl -d - http://www.jbxue.com
-E cert.pem 指定本地证书
-H <header:value> 为HTTP请求设置任意header及值。如curl -H "Connection:keep-alive" http://www.jbxue.com
-I 构造一个HEAD请求
-X/--request method 用户定义的HTTP请求方法名如 curl -X GET www.baidu.com
--compressed 采用压缩方式接收返回数据
--connect-timeout <s> 设置超时时间
-v 详细输出,包含请求和响应的首部
--retry num
--retry timeo 指定重试的次数和间隔
--tcp-nodelay 打开TCP_NODELAY选项 不进行捎带确认
环境 变量:http_proxy [protocol://]<host>[:port]
来自:http://www.jbxue.com/article/curl_http_M1hclL89Ps3f.html
最近更新了腾讯qq,在连接手机进行adb调试的时候adb无法启动。原因就是qq有个安卓手机连接。打开任务管理器,找到tadb.exe。然后关掉。一切ok。
PHP实现Cookie共享及负载均衡的探讨。---From:PHP低级码农群
Php/Js/Shell/Go jack 2013-12-19 16:43




