国内iphone ios app store审核ipv6被拒解决方案(IPv6隧道方式)

Objective-Cliuliangsong 发表了文章 • 0 个评论 • 28 次浏览 • 10 小时前 • 来自相关话题

  由于苹果的应用审核策略升级,自2016年6月1日起,提交新版本的APP需要支持IPV6-Only的网络才能通过审核。而目前国内99%的网络不支持IPV6,甚至国内最大的云平台阿里云,由于无可用IPV6网络,干脆禁用了云服务器的IPV6模块,可见苹果给国内开发者扔下一个大大的难题。
  下面以CentOS 7.2为例,通过ipv6通道的方式,解决ios ipv6审核拒解的难题。
  一、开启服务器的IPV6模块(阿里云):  由于阿里云禁用了云服务器ECS的IPV6模块,所有我们需要先开启它:
1、修改/etc/sysctl.conf中ipv6的配置,将下面三行值设置为0,如下所示:net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0  
2、注释掉/etc/modprobe.d/disable_ipv6.conf文件中的内容,或者直接删除此文件。#alias net-pf-10 off
#options ipv6 disable=0  
3、修改/etc/sysconfig/network中的配置项NETWORKING_IPV6值为YES:NETWORKING_IPV6=yes  
4、重启服务器,查看IPV6模块是否开启成功:init 6ifconfig |grep inet6  二、创建IPV6隧道:  这里使用免费又好用的网站https://www.tunnelbroker.net/来创建IPV6隧道,创建前需免费注册账号,创建完账号后,开始执行下面操作:
1、创建隧道:点击“Create Regular Tunnel”,进入”Create New Tunnel“页面;输入你的web服务器的公网IP地址,并选择合适的隧道服务器地址,选择之前最好先对服务器ip进行ping测试,选择丢包率和延迟较小的服务器来创建,这直接决定你将来通过审核的成功率,我这里选择的是香港(Hong Kong, HK);点击”Create Tunnel“完成创建。
  
2、创建完成后,点击"Example Configurations"选项卡,在下拉菜单中选择”Linux-net-tools“,然后复制代码,在web服务器中执行:


执行完成后,输出ifconfig命令,即可查看到创建隧道后,本地服务器的ipv6地址:



 
3、至此,web服务器已经通过隧道的方式接入到IPV6网络了,可以使用ping6命令进行测试: ping6 ipv6.baidu.com
ping6 ipv6.google.com  三、开启Web服务的IPV6支持:1、apache修改配置文件,将Listen行修改为如下(vim /etc/httpd/conf/httpd.conf):Listen [::]:80  
2、nginx修改配置文件,将Listen行修改为如下:listen [::]:80;  四、添加域名的IPV6记录( aaaa记录):  在域名注册商网站,登录到域名管理后台,添加一条aaaa记录,记录名与ipv4名相同,记录值为上面web服务器的IPV6地址"2001:470:35:7ea::2"。如域名商不支持aaaa记录,可以将NS服务修改为DNSPOD的NS服务器,到dnspod上去进行添加。
  五、在线测试网站的IPV6支持:  打开网站http://ipv6-test.com/validate.php,输入域名进行测试,如前面两项校验通过,即可将app提交审核啦,欢迎留言交流。 查看全部
  由于苹果的应用审核策略升级,自2016年6月1日起,提交新版本的APP需要支持IPV6-Only的网络才能通过审核。而目前国内99%的网络不支持IPV6,甚至国内最大的云平台阿里云,由于无可用IPV6网络,干脆禁用了云服务器的IPV6模块,可见苹果给国内开发者扔下一个大大的难题。
  下面以CentOS 7.2为例,通过ipv6通道的方式,解决ios ipv6审核拒解的难题。
  

一、开启服务器的IPV6模块(阿里云):

  由于阿里云禁用了云服务器ECS的IPV6模块,所有我们需要先开启它:
1、修改/etc/sysctl.conf中ipv6的配置,将下面三行值设置为0,如下所示:
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
  
2、注释掉/etc/modprobe.d/disable_ipv6.conf文件中的内容,或者直接删除此文件。
#alias net-pf-10 off
#options ipv6 disable=0
  
3、修改/etc/sysconfig/network中的配置项NETWORKING_IPV6值为YES:
NETWORKING_IPV6=yes
  
4、重启服务器,查看IPV6模块是否开启成功:
init 6
ifconfig |grep inet6
  

二、创建IPV6隧道:

  这里使用免费又好用的网站https://www.tunnelbroker.net/来创建IPV6隧道,创建前需免费注册账号,创建完账号后,开始执行下面操作:
1、创建隧道:
  1. 点击“Create Regular Tunnel”,进入”Create New Tunnel“页面;
  2. 输入你的web服务器的公网IP地址,并选择合适的隧道服务器地址,选择之前最好先对服务器ip进行ping测试,选择丢包率和延迟较小的服务器来创建,这直接决定你将来通过审核的成功率,我这里选择的是香港(Hong Kong, HK);
  3. 点击”Create Tunnel“完成创建。

  
2、创建完成后,点击"Example Configurations"选项卡,在下拉菜单中选择”Linux-net-tools“,然后复制代码,在web服务器中执行:
详解通过ipv6隧道的方式解决ios_ipv6审核被拒.png
执行完成后,输出ifconfig命令,即可查看到创建隧道后,本地服务器的ipv6地址:
详解通过ipv6隧道的方式解决ios_ipv6审核被拒_02.png

 
3、至此,web服务器已经通过隧道的方式接入到IPV6网络了,可以使用ping6命令进行测试: 
ping6 ipv6.baidu.com
ping6 ipv6.google.com
  

三、开启Web服务的IPV6支持:

1、apache修改配置文件,将Listen行修改为如下(vim /etc/httpd/conf/httpd.conf):
Listen [::]:80
  
2、nginx修改配置文件,将Listen行修改为如下:
listen       [::]:80;
  

四、添加域名的IPV6记录( aaaa记录):

  在域名注册商网站,登录到域名管理后台,添加一条aaaa记录,记录名与ipv4名相同,记录值为上面web服务器的IPV6地址"2001:470:35:7ea::2"。如域名商不支持aaaa记录,可以将NS服务修改为DNSPOD的NS服务器,到dnspod上去进行添加。
  

五、在线测试网站的IPV6支持:

  打开网站http://ipv6-test.com/validate.php,输入域名进行测试,如前面两项校验通过,即可将app提交审核啦,欢迎留言交流。

PHP curl curl_setopt()函数选项合集

PHPllslx520 发表了文章 • 0 个评论 • 137 次浏览 • 2017-06-05 20:04 • 来自相关话题

组选项名称值类型描述网址CURLOPT_URLstring【必须】指定需要获取的URL地址,也可以在curl_init()函数初始化会话的时候作为参数传入。CURLOPT_PATH_AS_ISbool是否不处理URL中的"../"。(curl 7.42.0、PHP 7.0.7以上版本)CURLOPT_DEFAULT_PROTOCOLstring指定URL不带协议的时候,使用的默认协议(PHP 7.0.7以上版本)。CURLOPT_HTTP_VERSIONinteger使用的HTTP版本:CURL_HTTP_VERSION_NONE (默认值,让 curl选择),CURL_HTTP_VERSION_1_0 (强制使用 HTTP/1.0)或CURL_HTTP_VERSION_1_1 (强制使用 HTTP/1.1)。  CURLOPT_PORTinteger指定连接端口,替换 URL 中的主机和端口。CURLOPT_CONNECT_TOarray连接到指定的主机和端口,替换 URL 中的主机和端口。接受指定字符串格式的数组: HOST:PORT:CONNECT-TO-HOST:CONNECT-TO-PORT。( curl 7.49.0, PHP 7.0.7以上版本)CURLOPT_CONNECT_ONLYbool是否只做代理、验证、连接过程,但不传输数据。此选项用于 HTTP、SMTP 和 POP3。重

向CURLOPT_FOLLOWLOCATIONbool【常用】是否根据服务器返回的http头"Location:"信息,自定重定向到相关页面。CURLOPT_MAXREDIRSinteger指定递归重定向的最大次数。CURLOPT_AUTOREFERERbool"Location:"重定向时,是否自动设置header的"Referer:"信息。CURLOPT_UNRESTRICTED_AUTHbool是否CURLOPT_FOLLOWLOCATION重定向 header 中的多个 location 时继续发送用户名和密码信息,哪怕主机名已改变。CURLOPT_POSTREDIRinteger位掩码, 设置当CURLOPT_FOLLOWLOCATION时, 么情况下需要再次 HTTP POST 到重定向网址:
1 (301 永久重定向);
2 (302 Found)
4 (303 See Other) ,
可以使用组合的形式:,如: 1 | 2。请

头CURLOPT_HTTPGETboolTRUE时会设置http的METHOD为GET(默认即为GET,所有只有METHOD被修改时才使用此选项)。CURLOPT_CUSTOMREQUESTstringHTTP请求时,指定自定义的Method,如:GET、POST、PUT、DELETE等。CURLOPT_USERAGENTstring【常用】设置HTTP请求头"User-Agent: "字段值信息,用来伪装浏览器信息,让curl抓取更像真实的浏览器访问。CURLOPT_REFERERstring【常用】设置HTTP请求头"Referer:" 字段值信息,用来伪装来路信息,让curl抓取更像真实的浏览器访问。CURLOPT_ENCODINGstring设置HTTP请求头中"Accept-Encoding: "的值,支持的编码有"identity"、"deflate"和"gzip",如果为空字符串"",会发送所有支持的编码类型 (curl 7.10以上版本)。CURLOPT_HTTPHEADERarray【常用】以数组的形式设置http请求头信息,如:
array('Referer: http://aiezu.com', 'Accept-Language: zh-CN,zh;q=0.8')cook
iesCURLOPT_COOKIEstring【常用】设定HTTP请求头中"Cookie: "部分的内容,多个cookie用分号分隔,分号后带一个空格,如: "name=aiezu; site=aiezu.com"。CURLOPT_COOKIEFILEstring【常用】从指定文件中读取cookie,并发送到http服务,文件中的cookie必须为Netscape格式。CURLOPT_COOKIEJARstring【常用】将HTTP响应头中的cookie保存到指定文件。CURLOPT_COOKIESESSIONbool是否开启新的一次cookie会话,忽略之前存储的cookie会话信息。代理CURLOPT_HTTPPROXYTUNNELbool设置为TRUE时会通过指定的HTTP代理来传输。CURLOPT_PROXYstring【常用】指定代理信息,如:8.8.8.8:8080,socks5://8.8.8.8:88。CURLOPT_PROXYPORTstring指定代理服务器端口。CURLOPT_PROXYTYPEinteger指定代理服务器类型,支持的值:CURLPROXY_HTTP (默认值) CURLPROXY_SOCKS4、 CURLPROXY_SOCKS5、 CURLPROXY_SOCKS4A 或 CURLPROXY_SOCKS5_HOSTNAME;(cURL 7.10以上版本)。CURLOPT_PROXYAUTHinteger代理连接的认证方式,使用在CURLOPT_HTTPAUTH中的位掩码,当前仅支持 CURLAUTH_BASIC和CURLAUTH_NTLM (cURL 7.10以上版本)。CURLOPT_PROXYUSERPWDstring一个用来连接到代理的"[username]:[password]"格式的字符串。CURLOPT_PROXYHEADERarray传给代理的自定义HTTP头;(curl 7.37.0,  PHP 7.0.7以上版本)。CURLOPT_PROXY_SERVICE_NAMEstring代理验证服务的名称(curl 7.34.0,  PHP 7.0.7以上版本)。POST
/
PUTCURLOPT_POSTbool【常用】设置为TRUE时将强制以标准POST方式发送请求,标准POST方式HTML表单类型为"application/x-www-form-urlencoded";注意:如果此选项设置为TRUE,而CURLOPT_POSTFIELDS的参数为数组,那么数据将不会被提交到服务器。CURLOPT_POSTFIELDSarray
string【常用】指定要使用HTTP协议中的"POST"方式来发送的数据; 接受两种格式的数据类型:
1、字符串格式: 这种格式是urlencoded后的字符串,类似'para1=val1&para2=val2&...'形式,这种格式通过HTML表单类型为"application/x-www-form-urlencoded"方式提交到服务器;
2、数组格式:这种格式是以字段名为键名,字段值为键值的数组,这种格式通过HTML表单类型为"multipart/form-data"方式提交到服务器,因此,数组格式可以用来发送文件;如要发送文件,在文件名完整路径前面加上“@”前缀, 文件类型可在文件名后以 ';type=mimetype' 的格式指定;从PHP 5.5.0开始, “@“前缀已被废弃,文件可通过CURLFile 发送; 如:
array('pic'=>'@/tmp/aiezu.com.png')
换成:
array('pic'=>new CURLFile('/tmp/aiezu.com.png'))   CURLOPT_SAFE_UPLOADbool设置为TRUE时,禁用"@"前缀发送文件,以增加安全性,这时发送文件可以通过CURLFile方式;(PHP 5.5添加此选项,PHP 7移除了此选项)CURLOPT_PUTbool【常用】设置为TRUE时,允许以HTTP PUT方式发送文件,此时必须设置CURLOPT_INFILE、CURLOPT_INFILESIZE选项;CURLOPT_INFILEstring【常用】http put方式上传文件时需要读取的文件;CURLOPT_INFILESIZE integer【常用】http put方式上传文件时需要读取的文件长度;CURLOPT_READFUNCTIONfunctionR【常用】设置一个回调函数来,对HTTP PUT文件进行读取处理。此函数包含三个参数:
  参数一为curl的资源句柄;
  参数二为设置在CURLOPT_INFILE选项中,要读取文件的资源句柄;
  参数三为允许读取的最大数据数量;
函数返回当前读取到的字符串,返回空字符串作为 EOF(文件结束) 信号。认证CURLOPT_HTTPAUTHinteger【常用】使用的HTTP验证方法,可以是:CURLAUTH_BASIC、 CURLAUTH_DIGEST、 CURLAUTH_GSSNEGOTIATE、 CURLAUTH_NTLM、 CURLAUTH_ANY和 CURLAUTH_ANYSAFE,可以使用 | 位域(OR)操作符结合多个值,curl会让服务器选择支持的方法,并选择最好的那个;
  CURLAUTH_ANY是 CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM 的别名,
  CURLAUTH_ANYSAFE 是 CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM 的别名。CURLOPT_USERNAMEstring【常用】验证中使用的用户名;(curl 7.19.1, PHP 5.5.0以上版本)。CURLOPT_USERPWDstring【常用】验证需要的用户名和密码,格式为:"[username]:[password]"。CURLOPT_SERVICE_NAMEstring验证服务的名称(curl 7.43.0, PHP 7.0.7以上版本)。CURLOPT_LOGIN_OPTIONSstring可以设置特定的登录选项,如通过"AUTH=NTLM" 或者"AUTH=*"设置首选的登录选项,并结合CURLOPT_USERNAME 选项使用;(curl 7.34.0, PHP 7.0.7以上版本)。CURLOPT_NETRCbool是否使用~/.netrc文件获取用户名和密码来连接远程站点。CURLOPT_KRB4LEVELstringKRB4 (Kerberos 4)安全级别,安全级别从低到高一次是:"clear"、"safe"、"confidential"、"private",默认为"private",这个选项设置为NULL时将禁用KRB4安全认证,目前 KRB4 安全认证只能用于FTP传输。CURLOPT_XOAUTH2_BEARERstring指定OAuth 2.0 access token;(curl 7.33.0, PHP 7.0.7以上版本)。证书CURLOPT_SSLCERTstring【常用】指定一个SSL证书文件名;CURLOPT_SSLCERTPASSWDstring【常用】使用CURLOPT_SSLCERT证书需要的密码;CURLOPT_SSLCERTTYPEstring指定证书格式类型,支持的格式有"PEM" (默认值)、"DER"和"ENG";    (curl 7.9.3以上版本)CURLOPT_CAPATHstring一个保存着多个CA证书的目录,这个选项配合CURLOPT_SSL_VERIFYPEER一起使用的。CURLOPT_CAINFOstring【常用】一个保存着一个或多个用来让服务端验证的证书的文件名,这个参数仅仅在和CURLOPT_SSL_VERIFYPEER一起使用时才有意义,可能需要绝对路径。CURLOPT_SSL_VERIFYPEERbool【常用】是否禁止curl验证对等证书(peer's certificate),默认为FALSE;要验证的交换证书可以在 CURLOPT_CAINFO 选项中设置,或在 CURLOPT_CAPATH中设置证书目录;自cURL 7.10开始默认为 TRUE,从cURL 7.10开始默认绑定安装。CURLOPT_SSL_VERIFYSTATUSbool验证证书状态;(curl 7.41.0, PHP 7.0.7以上版本) 密钥CURLOPT_SSLKEYstring指定一个SSL私玥文件名。CURLOPT_SSLKEYPASSWDstringSSL私钥的密码;(由于此选项包含了敏感的密码信息,记得保证这个PHP脚本的安全。)CURLOPT_KEYPASSWDstring使用CURLOPT_SSLKEY或CURLOPT_SSH_PRIVATE_KEYFILE 私钥时候的密码;(curl 7.16.1以上版本)。CURLOPT_SSLKEYTYPEstringCURLOPT_SSLKEY中指定的私钥的加密类型,支持的私钥类型为"PEM"(默认值)、"DER"和"ENG"。CURLOPT_SSLENGINEstring用来在CURLOPT_SSLKEY中指定的SSL私钥的加密引擎变量。CURLOPT_SSLENGINE_DEFAULTstring用来做非对称加密操作的变量。CURLOPT_RANDOM_FILEstring指定一个用来生成 SSL 随机数种子的文件名。CURLOPT_EGDSOCKETstringLike CURLOPT_RANDOM_FILE, except a filename to an Entropy Gathering Daemon socket。SSL
选项CURLOPT_SSL_FALSESTARTbool是否开启 TLS False Start (一种 TLS 握手优化方式),默认TRUE;  (curl 7.42.0, PHP 7.0.7以上版本) CURLOPT_SSL_CIPHER_LISTstring一个SSL的加密算法列表,例如RC4-SHA和TLSv1都是可用的加密列表。CURLOPT_SSL_OPTIONSinteger设置SSL行为选项,可以是:
  CURLSSLOPT_ALLOW_BEAST: do not attempt to use any workarounds for a security flaw in the SSL3 and TLS1.0 protocols. 
  CURLSSLOPT_NO_REVOKE:disable certificate revocation checks for those SSL backends where such behavior is present.
(curl 7.25.0, PHP 7.0.7以上版本)CURLOPT_SSL_VERIFYHOSTinteger【常用】可能的值:
0 :为不检查名称(默认);
1 :检查服务器SSL证书中是否存在一个公用名(common name)(curl 7.28.1以下版本才支持);
2 :会检查公用名是否存在,并且是否与提供的主机名匹配。 CURLOPT_SSL_ENABLE_ALPNbool是否禁用SSL握手中的 ALPN (如果SSL后端的libcurl内建支持) 用于协商到http2,默认为FALSE;  (curl 7.36.0, PHP 7.0.7以上版本)CURLOPT_SSL_ENABLE_NPNbool是否禁用SSL握手中的 NPN(如果 SSL 后端的 libcurl 内建支持),用于协商到 http2,默认为FALSE;  (curl 7.36.0, PHP 7.0.7以上版本)CURLOPT_SSLVERSIONinteger指定SSL版本,CURL_SSLVERSION_DEFAULT (0), CURL_SSLVERSION_TLSv1 (1), CURL_SSLVERSION_SSLv2 (2), CURL_SSLVERSION_SSLv3 (3), CURL_SSLVERSION_TLSv1_0 (4), CURL_SSLVERSION_TLSv1_1 (5) , CURL_SSLVERSION_TLSv1_2 (6) 中的其中一个,最好不要设置此选项,使用默认值即可,设置为 2 或 3 比较危险,在 SSLv2 和 SSLv3 中有弱点存在。CURLOPT_CERTINFObool是否将在安全传输时输出SSL证书信息到 STDERR,默认为TRUE,需要设置CURLOPT_VERBOSE选项为TRUE才有效; (curl 7.19.1, PHP 5.3.2以上版本)SSH
选项CURLOPT_SSH_PRIVATE_KEYFILEstring指定ssh私钥文件,如果未设置,默认为$HOME/.ssh/id_dsa;(curl 7.16.1以上版本)CURLOPT_SSH_PUBLIC_KEYFILEstring指定ssh公钥文件,如果未设置,默认为$HOME/.ssh/id_dsa.pub;(curl 7.16.1以上版本)CURLOPT_SSH_HOST_PUBLIC_KEY_MD5string远程主机公钥(public key) 的 MD5 校验值,有32位16进制组成,在不匹配的时候curl拒绝连接,此选项仅用于 SCP 和 SFTP 的传输;(curl 7.17.1以上版本)CURLOPT_SSH_AUTH_TYPESinteger一个或者多个有位掩码"|"连接的值,包含如下: CURLSSH_AUTH_PUBLICKEY、 CURLSSH_AUTH_PASSWORD、 CURLSSH_AUTH_HOST、 CURLSSH_AUTH_KEYBOARD,或者设置成CURLSSH_AUTH_ANY让curl自己选择; (curl 7.16.1以上版本)FTPCURLOPT_FTPPORTstring这个值将被用来获取供FTP"PORT"指令所需要的IP地址,"PORT" 指令告诉远程服务器连接到我们指定的IP地址,这个字符串可以是纯文本的IP地址、主机名、一个网络接口名(UNIX下)或者只是一个'-'来使用默认的 IP 地址。 CURLOPT_FTPSSLAUTHintegerFTP验证方式:CURLFTPAUTH_SSL (首先尝试SSL)、CURLFTPAUTH_TLS (首先尝试TLS)、CURLFTPAUTH_DEFAULT (让curl自行决定)。(curl 7.12.2以上版本)。CURLOPT_FTP_FILEMETHODinteger告诉curl使用哪种方式来获取 FTP(s) 服务器上的文件。可能的值有: CURLFTPMETHOD_MULTICWD、 CURLFTPMETHOD_NOCWD 和 CURLFTPMETHOD_SINGLECWD。(curl  7.15.1,PHP 5.3.0以上版本)。CURLOPT_TRANSFERTEXTboolFTP是否使用使用ASCII模式传输,默认为TRUE,对于LDAP,它检索纯文本信息而非 HTML,在 Windows 系统上,系统不会把 STDOUT 设置成二进制 模式。CURLOPT_FTPASCIIboolCURLOPT_TRANSFERTEXT的别名。CURLOPT_FTPLISTONLYbool是否只列出 FTP 目录的名字。CURLOPT_FTPAPPENDbool是否为追加写入文件,而不是覆盖。CURLOPT_FTP_CREATE_MISSING_DIRSbool是否自动创建不存在的ftp目录。CURLOPT_QUOTEarray数组,一组先于 FTP 请求的在服务器上执行的FTP命令。 CURLOPT_POSTQUOTEarray数组,在 FTP 请求执行完成后,在服务器上执行的一组array格式的 FTP 命令。CURLOPT_TFTP_NO_OPTIONSbool是否不发送 TFTP 的 options 请求。(curl  7.48.0 ,PHP 7.0.7 以上版本) CURLOPT_FTP_USE_EPRTboolTRUE 时,当 FTP 下载时,使用 EPRT (和 LPRT)命令, 设置为 FALSE 时禁用 EPRT 和 LPRT,仅仅使用PORT 命令。    CURLOPT_FTP_USE_EPSVboolTRUE 时,在FTP传输过程中,回到 PASV 模式前,先尝试 EPSV 命令,设置为 FALSE 时禁用 EPSV。断点
续传CURLOPT_RANGEstring【常用】指定字节为单位的数据获取范围,可以用”N-M”的形式,多个范围用逗号分隔,如:"0-5,100-101"(仅HTTP GET有效)。CURLOPT_RESUME_FROMinteger指定字节为单位的数据起始偏移量(仅HTTP GET有效)。速率
限制CURLOPT_LOW_SPEED_LIMITinteger传输速度,每秒字节(bytes)数,根据CURLOPT_LOW_SPEED_TIME秒数统计是否因太慢而取消传输。CURLOPT_LOW_SPEED_TIMEinteger当传输速度小于CURLOPT_LOW_SPEED_LIMIT时(bytes/sec),PHP会判断是否因太慢而取消传输。    CURLOPT_MAX_RECV_SPEED_LARGEinteger如果下载速度超过了此速度(以每秒字节数来统计) ,即传输过程中累计的平均数,传输就会降速到这个参数的值。默认不限速。 ( curl 7.15.5、PHP 5.4.0以上版本)CURLOPT_MAX_SEND_SPEED_LARGEintegerCURLOPT_MAX_SEND_SPEED_LARGE    如果上传的速度超过了此速度(以每秒字节数来统计),即传输过程中累计的平均数 ,传输就会降速到这个参数的值。默认不限速。  ( curl 7.15.5、PHP 5.4.0以上版本)连接
选项CURLOPT_MAXCONNECTSinteger允许的最大连接数量,达到限制时,会通过CURLOPT_CLOSEPOLICY决定应该关闭哪些连接。CURLOPT_CONNECTTIMEOUTinteger在尝试连接时等待的秒数,设置为0,则无限等待。CURLOPT_CONNECTTIMEOUT_MSinteger在尝试连接时等待的毫秒数,设置为0,则无限等待。CURLOPT_TIMEOUTinteger允许curl数执行的最长秒数。CURLOPT_TIMEOUT_MSinteger允许curl数执行的最长毫秒数。CURLOPT_EXPECT_100_TIMEOUT_MSinteger超时预计: 100毫秒内的 continue 响应 默认为 1000毫秒。(curl 7.36.0、PHP 7.0.7以上版本)CURLOPT_DNS_USE_GLOBAL_CACHEbool是否开启DNS缓存,默认TRUE。CURLOPT_DNS_CACHE_TIMEOUTinteger设置DNS在内存中缓存的时间,默认为120秒。响应
选项CURLOPT_BINARYTRANSFERbool设置CURLOPT_RETURNTRANSFER 是否以原生的(Raw)数据格式返回。 从 PHP 5.1.3 开始,此选项不再有效,永远以原生数据格式返回。CURLOPT_RETURNTRANSFERbool【常用】将curl_exec()获取的信息以字符串返回,而不是直接输出。CURLOPT_TIMECONDITIONinteger设置如何对待CURLOPT_TIMEVALUE的时间。
  CURL_TIMECOND_IFMODSINCE(默认):仅在页面CURLOPT_TIMEVALUE之后修改,才返回页面,没有修改则返回"304 Not Modified"头。
如果设置了CURLOPT_HEADER为TRUE,CURL_TIMECOND_IFUNMODSINCE则起相反的效果。 CURLOPT_TIMEVALUEinteger从1970年1月1日开始的秒数时间戳,这个时间戳提供给CURLOPT_TIMECONDITION选项判断。响

头CURLOPT_HEADERbool【常用】为TRUE时会将HTTP头/文件头信息作为数据输出。CURLOPT_WRITEHEADERstream将响应头信息的内容的写入到指定地方,如写入到文件,则传fopen()函数返回的流资源句柄。CURLOPT_HEADERFUNCTIONfunction【常用】设置一个回调函数来处理响应头信息,此函数必须包含两个参数,参数一为curl的资源句柄,参数二为curl传入的响应头信息,函数必须返回参数二的长度,用来告诉curl成功接收到了传入头信息;CURLINFO_HEADER_OUTbool是否追踪句柄的请求字符串。响应
BODYCURLOPT_NOBODYbool【常用】设置为TRUE时,不会再输出BODY部分,同时METHOD变成HEAD;CURLOPT_FILEstream【常用】设置响应BODY要写入到指定地方,如写入到文件,则传fopen()函数返回的流资源句柄。CURLOPT_WRITEFUNCTIONfunction【常用】设置一个回调函数来处理响应BODY信息,此函数必须包含两个参数,参数一为curl的资源句柄,参数二为curl传入的响应BODY信息,函数必须返回参数二的长度,用来告诉curl成功接收到了传入响应BODY信息;CURLOPT_NOPROGRESSbool是否关闭进度统计功能,默认为TRUE。CURLOPT_PROGRESSFUNCTIONfunction【常用】设置一个回调函数来处理上传下载的进度,函数必须有五个参数:
参数一:是curl的资源句柄;
参数二:预计要下载的总字节(bytes)数;
参数三:目前下载的字节数;
参数四:预计传输中总上传字节数;
参数五:目前上传的字节数。
返回非零值将中断传输,并返回CURLE_ABORTED_BY_CALLBACK错误。只有设置 CURLOPT_NOPROGRESS 选项为 FALSE 时才会调用这个回调函数。调试
选项CURLOPT_VERBOSEbool【常用】curl是否输出所有调试信息,写入到STDERR,或在CURLOPT_STDERR中指定的文件,默认为FALSE。CURLOPT_STDERRstream设置错误信息要写入到指定地方,如写入到文件,则传fopen()函数返回的流资源句柄,默认为STDERR。CURLOPT_NOSIGNALbool是否忽略所有的cURL传递给PHP进行的信号。在 SAPI 多线程传输时此项被默认启用,所以超时选项仍能使用。(curl 7.10以上版本)CURLOPT_FAILONERRORbool设置为TRUE时,当 HTTP 状态码大于等于 400,TRUE 将将显示错误详情。 默认情况下将返回页面,忽略 HTTP 代码。    CURLOPT_HTTP200ALIASESarray数组,HTTP 200 响应码数组,数组中的响应码被认为是正确的响应,而非错误。( curl 7.10.3以上版本)CURLOPT_FILETIMEbool是否尝试获取远程文档中的修改时间信息。获取到的修改时间可以通过 curl_getinfo()函数查看。    网络
选项CURLOPT_INTERFACEstringcurl通过指定接口(interface)进行数据传输。可以是一个网口名、IP 地址或者是一个主机名。CURLOPT_IPRESOLVEinteger允许curl选择想要解析的IP地址类别,只有在地址有多种ip类别的时候才能用,可以的值有: CURL_IPRESOLVE_WHATEVER(默认)、 CURL_IPRESOLVE_V4、 CURL_IPRESOLVE_V6 (curl 7.10.8以上版本)CURLOPT_UNIX_SOCKET_PATHstring使用指定的 Unix 套接字作为连接。(cURL 7.40.0、PHP 7.0.7以上版本)CURLOPT_FORBID_REUSEbool在完成交互以后,是否强制断开连接,此链接将不能在连接池中重用。    CURLOPT_FRESH_CONNECT 强制获取一个新的连接,而不是使用连接池中的链接。CURLOPT_TCP_NODELAYbool是否禁用 TCP 的 Nagle 算法。  CURLOPT_TCP_FASTOPENbool是否开启TCP Fast Open。( curl 7.49.0、 PHP 7.0.7以上版本)CURLOPT_SASL_IRbool是否收到首包(first packet)后发送初始的响应(initial response)。(curl 7.31.10、PHP 7.0.7以上版本)CURLOPT_STREAM_WEIGHTinteger设置 stream weight 数值 ( 1 和 256 之间的数字)。(curl 7.46.0、PHP 7.0.7以上版本) 杂项CURLOPT_CRLFbool启用时将Unix的换行符转换成回车换行符。CURLOPT_PIPEWAITbool是否等待 pipelining/multiplexing。(curl 7.43.0、PHP 7.0.7以上版本)CURLOPT_CLOSEPOLICYintegerCURLCLOSEPOLICY_* 中的一个。CURLOPT_PINNEDPUBLICKEYstringSet the pinned public key. The string can be the file name of your pinned public key. The file format expected is "PEM" or "DER". The string can also be any number of base64 encoded sha256 hashes preceded by "sha256//" and separated by ";".    Added in cURL 7.39.0. Available since PHP 7.0.7.CURLOPT_PRIVATEstringAny data that should be associated with this cURL handle. This data can subsequently be retrieved with the CURLINFO_PRIVATE option of curl_getinfo(). cURL does nothing with this data. When using a cURL multi handle, this private data is typically a unique key to identify a standard cURL handle.    Added in cURL 7.10.3. 参考页面:php官网关于curl组件介绍:http://php.net/curl
PHP curl简单用法举例:http://aiezu.com/article/php_curl.html
php curl选项官方介绍:http://php.net/manual/zh/function.curl-setopt.php 查看全部
选项名称值类型描述
网址CURLOPT_URLstring【必须】指定需要获取的URL地址,也可以在curl_init()函数初始化会话的时候作为参数传入。
CURLOPT_PATH_AS_ISbool是否不处理URL中的"../"。(curl 7.42.0、PHP 7.0.7以上版本)
CURLOPT_DEFAULT_PROTOCOLstring指定URL不带协议的时候,使用的默认协议(PHP 7.0.7以上版本)。
CURLOPT_HTTP_VERSIONinteger使用的HTTP版本:CURL_HTTP_VERSION_NONE (默认值,让 curl选择),CURL_HTTP_VERSION_1_0 (强制使用 HTTP/1.0)或CURL_HTTP_VERSION_1_1 (强制使用 HTTP/1.1)。  
CURLOPT_PORTinteger指定连接端口,替换 URL 中的主机和端口。
CURLOPT_CONNECT_TOarray连接到指定的主机和端口,替换 URL 中的主机和端口。接受指定字符串格式的数组: HOST:PORT:CONNECT-TO-HOST:CONNECT-TO-PORT。( curl 7.49.0, PHP 7.0.7以上版本)
CURLOPT_CONNECT_ONLYbool是否只做代理、验证、连接过程,但不传输数据。此选项用于 HTTP、SMTP 和 POP3。


CURLOPT_FOLLOWLOCATIONbool【常用】是否根据服务器返回的http头"Location:"信息,自定重定向到相关页面。
CURLOPT_MAXREDIRSinteger指定递归重定向的最大次数。
CURLOPT_AUTOREFERERbool"Location:"重定向时,是否自动设置header的"Referer:"信息。
CURLOPT_UNRESTRICTED_AUTHbool是否CURLOPT_FOLLOWLOCATION重定向 header 中的多个 location 时继续发送用户名和密码信息,哪怕主机名已改变。
CURLOPT_POSTREDIRinteger位掩码, 设置当CURLOPT_FOLLOWLOCATION时, 么情况下需要再次 HTTP POST 到重定向网址:
1 (301 永久重定向);
2 (302 Found)
4 (303 See Other) ,
可以使用组合的形式:,如: 1 | 2。


CURLOPT_HTTPGETboolTRUE时会设置http的METHOD为GET(默认即为GET,所有只有METHOD被修改时才使用此选项)。
CURLOPT_CUSTOMREQUESTstringHTTP请求时,指定自定义的Method,如:GET、POST、PUT、DELETE等。
CURLOPT_USERAGENTstring【常用】设置HTTP请求头"User-Agent: "字段值信息,用来伪装浏览器信息,让curl抓取更像真实的浏览器访问。
CURLOPT_REFERERstring【常用】设置HTTP请求头"Referer:" 字段值信息,用来伪装来路信息,让curl抓取更像真实的浏览器访问。
CURLOPT_ENCODINGstring设置HTTP请求头中"Accept-Encoding: "的值,支持的编码有"identity"、"deflate"和"gzip",如果为空字符串"",会发送所有支持的编码类型 (curl 7.10以上版本)。
CURLOPT_HTTPHEADERarray【常用】以数组的形式设置http请求头信息,如:
array('Referer: http://aiezu.com', 'Accept-Language: zh-CN,zh;q=0.8')
cook
ies
CURLOPT_COOKIEstring【常用】设定HTTP请求头中"Cookie: "部分的内容,多个cookie用分号分隔,分号后带一个空格,如: "name=aiezu; site=aiezu.com"。
CURLOPT_COOKIEFILEstring【常用】从指定文件中读取cookie,并发送到http服务,文件中的cookie必须为Netscape格式。
CURLOPT_COOKIEJARstring【常用】将HTTP响应头中的cookie保存到指定文件。
CURLOPT_COOKIESESSIONbool是否开启新的一次cookie会话,忽略之前存储的cookie会话信息。
代理CURLOPT_HTTPPROXYTUNNELbool设置为TRUE时会通过指定的HTTP代理来传输。
CURLOPT_PROXYstring【常用】指定代理信息,如:8.8.8.8:8080,socks5://8.8.8.8:88。
CURLOPT_PROXYPORTstring指定代理服务器端口。
CURLOPT_PROXYTYPEinteger指定代理服务器类型,支持的值:CURLPROXY_HTTP (默认值) CURLPROXY_SOCKS4、 CURLPROXY_SOCKS5、 CURLPROXY_SOCKS4A 或 CURLPROXY_SOCKS5_HOSTNAME;(cURL 7.10以上版本)。
CURLOPT_PROXYAUTHinteger代理连接的认证方式,使用在CURLOPT_HTTPAUTH中的位掩码,当前仅支持 CURLAUTH_BASIC和CURLAUTH_NTLM (cURL 7.10以上版本)。
CURLOPT_PROXYUSERPWDstring一个用来连接到代理的"[username]:[password]"格式的字符串。
CURLOPT_PROXYHEADERarray传给代理的自定义HTTP头;(curl 7.37.0,  PHP 7.0.7以上版本)。
CURLOPT_PROXY_SERVICE_NAMEstring代理验证服务的名称(curl 7.34.0,  PHP 7.0.7以上版本)。
POST
/
PUT
CURLOPT_POSTbool【常用】设置为TRUE时将强制以标准POST方式发送请求,标准POST方式HTML表单类型为"application/x-www-form-urlencoded";注意:如果此选项设置为TRUE,而CURLOPT_POSTFIELDS的参数为数组,那么数据将不会被提交到服务器。
CURLOPT_POSTFIELDSarray
string
【常用】指定要使用HTTP协议中的"POST"方式来发送的数据; 接受两种格式的数据类型:
1、字符串格式: 这种格式是urlencoded后的字符串,类似'para1=val1&para2=val2&...'形式,这种格式通过HTML表单类型为"application/x-www-form-urlencoded"方式提交到服务器;
2、数组格式:这种格式是以字段名为键名,字段值为键值的数组,这种格式通过HTML表单类型为"multipart/form-data"方式提交到服务器,因此,数组格式可以用来发送文件;如要发送文件,在文件名完整路径前面加上“@”前缀, 文件类型可在文件名后以 ';type=mimetype' 的格式指定;从PHP 5.5.0开始, “@“前缀已被废弃,文件可通过CURLFile 发送; 如:
array('pic'=>'@/tmp/aiezu.com.png')
换成:
array('pic'=>new CURLFile('/tmp/aiezu.com.png'))
   
CURLOPT_SAFE_UPLOADbool设置为TRUE时,禁用"@"前缀发送文件,以增加安全性,这时发送文件可以通过CURLFile方式;(PHP 5.5添加此选项,PHP 7移除了此选项)
CURLOPT_PUTbool【常用】设置为TRUE时,允许以HTTP PUT方式发送文件,此时必须设置CURLOPT_INFILE、CURLOPT_INFILESIZE选项;
CURLOPT_INFILEstring【常用】http put方式上传文件时需要读取的文件;
CURLOPT_INFILESIZE integer【常用】http put方式上传文件时需要读取的文件长度;
CURLOPT_READFUNCTIONfunctionR【常用】设置一个回调函数来,对HTTP PUT文件进行读取处理。此函数包含三个参数:
  参数一为curl的资源句柄;
  参数二为设置在CURLOPT_INFILE选项中,要读取文件的资源句柄;
  参数三为允许读取的最大数据数量;
函数返回当前读取到的字符串,返回空字符串作为 EOF(文件结束) 信号。
认证CURLOPT_HTTPAUTHinteger【常用】使用的HTTP验证方法,可以是:CURLAUTH_BASIC、 CURLAUTH_DIGEST、 CURLAUTH_GSSNEGOTIATE、 CURLAUTH_NTLM、 CURLAUTH_ANY和 CURLAUTH_ANYSAFE,可以使用 | 位域(OR)操作符结合多个值,curl会让服务器选择支持的方法,并选择最好的那个;
  CURLAUTH_ANY是 CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM 的别名,
  CURLAUTH_ANYSAFE 是 CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM 的别名。
CURLOPT_USERNAMEstring【常用】验证中使用的用户名;(curl 7.19.1, PHP 5.5.0以上版本)。
CURLOPT_USERPWDstring【常用】验证需要的用户名和密码,格式为:"[username]:[password]"。
CURLOPT_SERVICE_NAMEstring验证服务的名称(curl 7.43.0, PHP 7.0.7以上版本)。
CURLOPT_LOGIN_OPTIONSstring可以设置特定的登录选项,如通过"AUTH=NTLM" 或者"AUTH=*"设置首选的登录选项,并结合CURLOPT_USERNAME 选项使用;(curl 7.34.0, PHP 7.0.7以上版本)。
CURLOPT_NETRCbool是否使用~/.netrc文件获取用户名和密码来连接远程站点。
CURLOPT_KRB4LEVELstringKRB4 (Kerberos 4)安全级别,安全级别从低到高一次是:"clear"、"safe"、"confidential"、"private",默认为"private",这个选项设置为NULL时将禁用KRB4安全认证,目前 KRB4 安全认证只能用于FTP传输。
CURLOPT_XOAUTH2_BEARERstring指定OAuth 2.0 access token;(curl 7.33.0, PHP 7.0.7以上版本)。
证书CURLOPT_SSLCERTstring【常用】指定一个SSL证书文件名;
CURLOPT_SSLCERTPASSWDstring【常用】使用CURLOPT_SSLCERT证书需要的密码;
CURLOPT_SSLCERTTYPEstring指定证书格式类型,支持的格式有"PEM" (默认值)、"DER"和"ENG";    (curl 7.9.3以上版本)
CURLOPT_CAPATHstring一个保存着多个CA证书的目录,这个选项配合CURLOPT_SSL_VERIFYPEER一起使用的。
CURLOPT_CAINFOstring【常用】一个保存着一个或多个用来让服务端验证的证书的文件名,这个参数仅仅在和CURLOPT_SSL_VERIFYPEER一起使用时才有意义,可能需要绝对路径。
CURLOPT_SSL_VERIFYPEERbool【常用】是否禁止curl验证对等证书(peer's certificate),默认为FALSE;要验证的交换证书可以在 CURLOPT_CAINFO 选项中设置,或在 CURLOPT_CAPATH中设置证书目录;自cURL 7.10开始默认为 TRUE,从cURL 7.10开始默认绑定安装。
CURLOPT_SSL_VERIFYSTATUSbool验证证书状态;(curl 7.41.0, PHP 7.0.7以上版本) 
密钥CURLOPT_SSLKEYstring指定一个SSL私玥文件名。
CURLOPT_SSLKEYPASSWDstringSSL私钥的密码;(由于此选项包含了敏感的密码信息,记得保证这个PHP脚本的安全。)
CURLOPT_KEYPASSWDstring使用CURLOPT_SSLKEY或CURLOPT_SSH_PRIVATE_KEYFILE 私钥时候的密码;(curl 7.16.1以上版本)。
CURLOPT_SSLKEYTYPEstringCURLOPT_SSLKEY中指定的私钥的加密类型,支持的私钥类型为"PEM"(默认值)、"DER"和"ENG"。
CURLOPT_SSLENGINEstring用来在CURLOPT_SSLKEY中指定的SSL私钥的加密引擎变量。
CURLOPT_SSLENGINE_DEFAULTstring用来做非对称加密操作的变量。
CURLOPT_RANDOM_FILEstring指定一个用来生成 SSL 随机数种子的文件名。
CURLOPT_EGDSOCKETstringLike CURLOPT_RANDOM_FILE, except a filename to an Entropy Gathering Daemon socket。
SSL
选项
CURLOPT_SSL_FALSESTARTbool是否开启 TLS False Start (一种 TLS 握手优化方式),默认TRUE;  (curl 7.42.0, PHP 7.0.7以上版本) 
CURLOPT_SSL_CIPHER_LISTstring一个SSL的加密算法列表,例如RC4-SHA和TLSv1都是可用的加密列表。
CURLOPT_SSL_OPTIONSinteger设置SSL行为选项,可以是:
  CURLSSLOPT_ALLOW_BEAST: do not attempt to use any workarounds for a security flaw in the SSL3 and TLS1.0 protocols. 
  CURLSSLOPT_NO_REVOKE:disable certificate revocation checks for those SSL backends where such behavior is present.
(curl 7.25.0, PHP 7.0.7以上版本)
CURLOPT_SSL_VERIFYHOSTinteger【常用】可能的值:
0 :为不检查名称(默认);
1 :检查服务器SSL证书中是否存在一个公用名(common name)(curl 7.28.1以下版本才支持);
2 :会检查公用名是否存在,并且是否与提供的主机名匹配。 
CURLOPT_SSL_ENABLE_ALPNbool是否禁用SSL握手中的 ALPN (如果SSL后端的libcurl内建支持) 用于协商到http2,默认为FALSE;  (curl 7.36.0, PHP 7.0.7以上版本)
CURLOPT_SSL_ENABLE_NPNbool是否禁用SSL握手中的 NPN(如果 SSL 后端的 libcurl 内建支持),用于协商到 http2,默认为FALSE;  (curl 7.36.0, PHP 7.0.7以上版本)
CURLOPT_SSLVERSIONinteger指定SSL版本,CURL_SSLVERSION_DEFAULT (0), CURL_SSLVERSION_TLSv1 (1), CURL_SSLVERSION_SSLv2 (2), CURL_SSLVERSION_SSLv3 (3), CURL_SSLVERSION_TLSv1_0 (4), CURL_SSLVERSION_TLSv1_1 (5) , CURL_SSLVERSION_TLSv1_2 (6) 中的其中一个,最好不要设置此选项,使用默认值即可,设置为 2 或 3 比较危险,在 SSLv2 和 SSLv3 中有弱点存在。
CURLOPT_CERTINFObool是否将在安全传输时输出SSL证书信息到 STDERR,默认为TRUE,需要设置CURLOPT_VERBOSE选项为TRUE才有效; (curl 7.19.1, PHP 5.3.2以上版本)
SSH
选项
CURLOPT_SSH_PRIVATE_KEYFILEstring指定ssh私钥文件,如果未设置,默认为$HOME/.ssh/id_dsa;(curl 7.16.1以上版本)
CURLOPT_SSH_PUBLIC_KEYFILEstring指定ssh公钥文件,如果未设置,默认为$HOME/.ssh/id_dsa.pub;(curl 7.16.1以上版本)
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5string远程主机公钥(public key) 的 MD5 校验值,有32位16进制组成,在不匹配的时候curl拒绝连接,此选项仅用于 SCP 和 SFTP 的传输;(curl 7.17.1以上版本)
CURLOPT_SSH_AUTH_TYPESinteger一个或者多个有位掩码"|"连接的值,包含如下: CURLSSH_AUTH_PUBLICKEY、 CURLSSH_AUTH_PASSWORD、 CURLSSH_AUTH_HOST、 CURLSSH_AUTH_KEYBOARD,或者设置成CURLSSH_AUTH_ANY让curl自己选择; (curl 7.16.1以上版本)
FTPCURLOPT_FTPPORTstring这个值将被用来获取供FTP"PORT"指令所需要的IP地址,"PORT" 指令告诉远程服务器连接到我们指定的IP地址,这个字符串可以是纯文本的IP地址、主机名、一个网络接口名(UNIX下)或者只是一个'-'来使用默认的 IP 地址。 
CURLOPT_FTPSSLAUTHintegerFTP验证方式:CURLFTPAUTH_SSL (首先尝试SSL)、CURLFTPAUTH_TLS (首先尝试TLS)、CURLFTPAUTH_DEFAULT (让curl自行决定)。(curl 7.12.2以上版本)。
CURLOPT_FTP_FILEMETHODinteger告诉curl使用哪种方式来获取 FTP(s) 服务器上的文件。可能的值有: CURLFTPMETHOD_MULTICWD、 CURLFTPMETHOD_NOCWD 和 CURLFTPMETHOD_SINGLECWD。(curl  7.15.1,PHP 5.3.0以上版本)。
CURLOPT_TRANSFERTEXTboolFTP是否使用使用ASCII模式传输,默认为TRUE,对于LDAP,它检索纯文本信息而非 HTML,在 Windows 系统上,系统不会把 STDOUT 设置成二进制 模式。
CURLOPT_FTPASCIIboolCURLOPT_TRANSFERTEXT的别名。
CURLOPT_FTPLISTONLYbool是否只列出 FTP 目录的名字。
CURLOPT_FTPAPPENDbool是否为追加写入文件,而不是覆盖。
CURLOPT_FTP_CREATE_MISSING_DIRSbool是否自动创建不存在的ftp目录。
CURLOPT_QUOTEarray数组,一组先于 FTP 请求的在服务器上执行的FTP命令。 
CURLOPT_POSTQUOTEarray数组,在 FTP 请求执行完成后,在服务器上执行的一组array格式的 FTP 命令。
CURLOPT_TFTP_NO_OPTIONSbool是否不发送 TFTP 的 options 请求。(curl  7.48.0 ,PHP 7.0.7 以上版本) 
CURLOPT_FTP_USE_EPRTboolTRUE 时,当 FTP 下载时,使用 EPRT (和 LPRT)命令, 设置为 FALSE 时禁用 EPRT 和 LPRT,仅仅使用PORT 命令。    
CURLOPT_FTP_USE_EPSVboolTRUE 时,在FTP传输过程中,回到 PASV 模式前,先尝试 EPSV 命令,设置为 FALSE 时禁用 EPSV。
断点
续传
CURLOPT_RANGEstring【常用】指定字节为单位的数据获取范围,可以用”N-M”的形式,多个范围用逗号分隔,如:"0-5,100-101"(仅HTTP GET有效)。
CURLOPT_RESUME_FROMinteger指定字节为单位的数据起始偏移量(仅HTTP GET有效)。
速率
限制
CURLOPT_LOW_SPEED_LIMITinteger传输速度,每秒字节(bytes)数,根据CURLOPT_LOW_SPEED_TIME秒数统计是否因太慢而取消传输。
CURLOPT_LOW_SPEED_TIMEinteger当传输速度小于CURLOPT_LOW_SPEED_LIMIT时(bytes/sec),PHP会判断是否因太慢而取消传输。    
CURLOPT_MAX_RECV_SPEED_LARGEinteger如果下载速度超过了此速度(以每秒字节数来统计) ,即传输过程中累计的平均数,传输就会降速到这个参数的值。默认不限速。 ( curl 7.15.5、PHP 5.4.0以上版本)
CURLOPT_MAX_SEND_SPEED_LARGEintegerCURLOPT_MAX_SEND_SPEED_LARGE    如果上传的速度超过了此速度(以每秒字节数来统计),即传输过程中累计的平均数 ,传输就会降速到这个参数的值。默认不限速。  ( curl 7.15.5、PHP 5.4.0以上版本)
连接
选项
CURLOPT_MAXCONNECTSinteger允许的最大连接数量,达到限制时,会通过CURLOPT_CLOSEPOLICY决定应该关闭哪些连接。
CURLOPT_CONNECTTIMEOUTinteger在尝试连接时等待的秒数,设置为0,则无限等待。
CURLOPT_CONNECTTIMEOUT_MSinteger在尝试连接时等待的毫秒数,设置为0,则无限等待。
CURLOPT_TIMEOUTinteger允许curl数执行的最长秒数。
CURLOPT_TIMEOUT_MSinteger允许curl数执行的最长毫秒数。
CURLOPT_EXPECT_100_TIMEOUT_MSinteger超时预计: 100毫秒内的 continue 响应 默认为 1000毫秒。(curl 7.36.0、PHP 7.0.7以上版本)
CURLOPT_DNS_USE_GLOBAL_CACHEbool是否开启DNS缓存,默认TRUE。
CURLOPT_DNS_CACHE_TIMEOUTinteger设置DNS在内存中缓存的时间,默认为120秒。
响应
选项
CURLOPT_BINARYTRANSFERbool设置CURLOPT_RETURNTRANSFER 是否以原生的(Raw)数据格式返回。 从 PHP 5.1.3 开始,此选项不再有效,永远以原生数据格式返回。
CURLOPT_RETURNTRANSFERbool【常用】将curl_exec()获取的信息以字符串返回,而不是直接输出。
CURLOPT_TIMECONDITIONinteger设置如何对待CURLOPT_TIMEVALUE的时间。
  CURL_TIMECOND_IFMODSINCE(默认):仅在页面CURLOPT_TIMEVALUE之后修改,才返回页面,没有修改则返回"304 Not Modified"头。
如果设置了CURLOPT_HEADER为TRUE,CURL_TIMECOND_IFUNMODSINCE则起相反的效果。 
CURLOPT_TIMEVALUEinteger从1970年1月1日开始的秒数时间戳,这个时间戳提供给CURLOPT_TIMECONDITION选项判断。


CURLOPT_HEADERbool【常用】为TRUE时会将HTTP头/文件头信息作为数据输出。
CURLOPT_WRITEHEADERstream将响应头信息的内容的写入到指定地方,如写入到文件,则传fopen()函数返回的流资源句柄。
CURLOPT_HEADERFUNCTIONfunction【常用】设置一个回调函数来处理响应头信息,此函数必须包含两个参数,参数一为curl的资源句柄,参数二为curl传入的响应头信息,函数必须返回参数二的长度,用来告诉curl成功接收到了传入头信息;
CURLINFO_HEADER_OUTbool是否追踪句柄的请求字符串。
响应
BODY
CURLOPT_NOBODYbool【常用】设置为TRUE时,不会再输出BODY部分,同时METHOD变成HEAD;
CURLOPT_FILEstream【常用】设置响应BODY要写入到指定地方,如写入到文件,则传fopen()函数返回的流资源句柄。
CURLOPT_WRITEFUNCTIONfunction【常用】设置一个回调函数来处理响应BODY信息,此函数必须包含两个参数,参数一为curl的资源句柄,参数二为curl传入的响应BODY信息,函数必须返回参数二的长度,用来告诉curl成功接收到了传入响应BODY信息;
CURLOPT_NOPROGRESSbool是否关闭进度统计功能,默认为TRUE。
CURLOPT_PROGRESSFUNCTIONfunction【常用】设置一个回调函数来处理上传下载的进度,函数必须有五个参数:
参数一:是curl的资源句柄;
参数二:预计要下载的总字节(bytes)数;
参数三:目前下载的字节数;
参数四:预计传输中总上传字节数;
参数五:目前上传的字节数。
返回非零值将中断传输,并返回CURLE_ABORTED_BY_CALLBACK错误。只有设置 CURLOPT_NOPROGRESS 选项为 FALSE 时才会调用这个回调函数。
调试
选项
CURLOPT_VERBOSEbool【常用】curl是否输出所有调试信息,写入到STDERR,或在CURLOPT_STDERR中指定的文件,默认为FALSE。
CURLOPT_STDERRstream设置错误信息要写入到指定地方,如写入到文件,则传fopen()函数返回的流资源句柄,默认为STDERR。
CURLOPT_NOSIGNALbool是否忽略所有的cURL传递给PHP进行的信号。在 SAPI 多线程传输时此项被默认启用,所以超时选项仍能使用。(curl 7.10以上版本)
CURLOPT_FAILONERRORbool设置为TRUE时,当 HTTP 状态码大于等于 400,TRUE 将将显示错误详情。 默认情况下将返回页面,忽略 HTTP 代码。    
CURLOPT_HTTP200ALIASESarray数组,HTTP 200 响应码数组,数组中的响应码被认为是正确的响应,而非错误。( curl 7.10.3以上版本)
CURLOPT_FILETIMEbool是否尝试获取远程文档中的修改时间信息。获取到的修改时间可以通过 curl_getinfo()函数查看。    
网络
选项
CURLOPT_INTERFACEstringcurl通过指定接口(interface)进行数据传输。可以是一个网口名、IP 地址或者是一个主机名。
CURLOPT_IPRESOLVEinteger允许curl选择想要解析的IP地址类别,只有在地址有多种ip类别的时候才能用,可以的值有: CURL_IPRESOLVE_WHATEVER(默认)、 CURL_IPRESOLVE_V4、 CURL_IPRESOLVE_V6 (curl 7.10.8以上版本)
CURLOPT_UNIX_SOCKET_PATHstring使用指定的 Unix 套接字作为连接。(cURL 7.40.0、PHP 7.0.7以上版本)
CURLOPT_FORBID_REUSEbool在完成交互以后,是否强制断开连接,此链接将不能在连接池中重用。    
CURLOPT_FRESH_CONNECT 强制获取一个新的连接,而不是使用连接池中的链接。
CURLOPT_TCP_NODELAYbool是否禁用 TCP 的 Nagle 算法。  
CURLOPT_TCP_FASTOPENbool是否开启TCP Fast Open。( curl 7.49.0、 PHP 7.0.7以上版本)
CURLOPT_SASL_IRbool是否收到首包(first packet)后发送初始的响应(initial response)。(curl 7.31.10、PHP 7.0.7以上版本)
CURLOPT_STREAM_WEIGHTinteger设置 stream weight 数值 ( 1 和 256 之间的数字)。(curl 7.46.0、PHP 7.0.7以上版本) 
杂项CURLOPT_CRLFbool启用时将Unix的换行符转换成回车换行符。
CURLOPT_PIPEWAITbool是否等待 pipelining/multiplexing。(curl 7.43.0、PHP 7.0.7以上版本)
CURLOPT_CLOSEPOLICYintegerCURLCLOSEPOLICY_* 中的一个。
CURLOPT_PINNEDPUBLICKEYstringSet the pinned public key. The string can be the file name of your pinned public key. The file format expected is "PEM" or "DER". The string can also be any number of base64 encoded sha256 hashes preceded by "sha256//" and separated by ";".    Added in cURL 7.39.0. Available since PHP 7.0.7.
CURLOPT_PRIVATEstringAny data that should be associated with this cURL handle. This data can subsequently be retrieved with the CURLINFO_PRIVATE option of curl_getinfo(). cURL does nothing with this data. When using a cURL multi handle, this private data is typically a unique key to identify a standard cURL handle.    Added in cURL 7.10.3.
 

参考页面:

php官网关于curl组件介绍:http://php.net/curl
PHP curl简单用法举例:http://aiezu.com/article/php_curl.html
php curl选项官方介绍:http://php.net/manual/zh/function.curl-setopt.php

PHP curl简单用法举例和相关函数介绍

PHPllslx520 发表了文章 • 0 个评论 • 121 次浏览 • 2017-06-04 22:24 • 来自相关话题

一、PHP curl抓取代码编写流程:使用PHP curl执行抓取请求分为下面基本四步:使用 curl_init() 函数创建一个curl句柄;使用 curl_setopt() 函数为curl句柄设置相应选项,php curl的丰富功能依靠此函数的设置来实现;使用 curl_exec() 函数执行抓取请求;使用 curl_close() 函数关闭curl句柄,释放内存;  二、PHP curl最基本用法:  下面使用简单的例子,通过使用php curl抓取本站首页源代码长度,介绍php curl的基本用法。注意CURLOPT_RETURNTRANSFER选项十分重要,作用为执行curl_exec函数时,是否返回curl传输内容到变量,默认为否,会直接将内容输出网页。<?php
// 创建一个curl句柄
$ch = curl_init();
// 设置访问的URL
curl_setopt($ch, CURLOPT_URL, "http://aiezu.com");
// 将curl请求执行时,将结果返回,而不是直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 执行curl请求,返回结果到变量
$html = curl_exec($ch);
// 关闭curl句柄
curl_close($ch);
echo strlen($html);运行结果:96161 三、PHP curl GET请求和POST请求:1、php curl get请求:<?php
$data = array('sex'=>1, 'age'=>18);
$url = sprintf("http://aiezu.com/test.php?%s", http_build_query($data));
// $url: http://aiezu.com/test.php?sex=1&age=18

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$html = curl_exec($ch);
curl_close($ch);
echo $html;输出结果:[REQUEST_METHOD]: GET

$_GET:
Array
(
[sex] => 1
[age] => 18
) 
2、php curl post 提交数据:<?php
$data = array('name'=>'爱E族', 'domain'=>'aiezu.com');
$url = "http://aiezu.com/test.php";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// 告诉curl使用POST的方式提交
curl_setopt($ch, CURLOPT_POST, 1);
// 设置要POST提交的数据
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

$html = curl_exec($ch);
curl_close($ch);
echo $html;输出结果:[REQUEST_METHOD]: POST
[CONTENT_LENGTH]: 250
[CONTENT_TYPE]: multipart/form-data; boundary=----------------------------39f5fe9c583c

$_POST:
Array
(
[name] => 爱E族
[domain] => aiezu.com
) 四、PHP curl组件相关函数:  PHP curl组件相关函数功能介绍: 函数名函数介绍基


数curl_init【常用】初始化一个curl会话,返回一个curl句柄;curl_setopt【常用】设置curl选项,具体选项介绍请参考php官方介绍:curl_setopt;curl_setopt_array【常用】使用数组的方式批量设置curl选项;curl_copy_handle克隆一个curl句柄和它的所有选项;curl_exec【常用】执行curl会话;curl_pause 暂停并取消暂停一个连接(PHP 5.5以上版本);curl_reset将curl句柄的所有curl选项重置为默认值(PHP 5.5以上版本);curl_getinfo获取curl最后会话信息,包含消耗时间、上传下载字节数、传输速度等信息;curl_errno返回curl会话最后一次的数字错误代码;curl_error返回curl会话最后一次的字符串错误描述;curl_strerror通过curl数字错误代码返回字符串描述(PHP 5.5以上版本);curl_close【常用】关闭curl会话;curl_escape 对指定字符串进行URL编码(PHP 5.5以上版本);curl_unescape 对指定字符串进行URL解码(PHP 5.5以上版本);curl_version以数组的形式返回php curl版本信息;批

理curl_multi_init创建一个curl批处理句柄(并发请求);curl_multi_add_handle向curl批处理句柄中添加单独的curl句柄;curl_multi_remove_handle从curl批处理句柄中移除某个curl句柄;curl_multi_setopt为curl批处理句柄设置选项;curl_multi_exec执行curl批处理句柄;curl_multi_info_read尝试从curl批处理句柄中获取 新curl子请求的完成信息;curl_multi_getcontent读取curl批处理句柄中curl子句柄的请求返回内容;curl_multi_close关闭curl批处理句柄;curl_multi_select 等待所有curl批处理中的活动连接;curl_multi_strerror通过curl批处理数字错误代码返回字符串描述(PHP 5.5以上版本);共


柄curl_share_init初始化一个curl共享句柄(PHP 5.5以上版本);curl_share_setopt为 curl共享句柄设置选项(PHP 5.5以上版本);curl_share_close关闭curl共享句柄(PHP 5.5以上版本);其
他curl_file_create创建一个curlfile对象(PHP 5.5以上版本); 五、参考资料:php官网关于curl组件介绍:http://php.net/curlphp curl选项官方介绍:http://php.net/manual/zh/function.curl-setopt.phpphp curl选项爱E族整理:https://aiezu.com/article/php_curl_curl_setopt_sets.html 查看全部

一、PHP curl抓取代码编写流程:

使用PHP curl执行抓取请求分为下面基本四步:
  1. 使用 curl_init() 函数创建一个curl句柄;
  2. 使用 curl_setopt() 函数为curl句柄设置相应选项,php curl的丰富功能依靠此函数的设置来实现;
  3. 使用 curl_exec() 函数执行抓取请求;
  4. 使用 curl_close() 函数关闭curl句柄,释放内存;
  

二、PHP curl最基本用法:

  下面使用简单的例子,通过使用php curl抓取本站首页源代码长度,介绍php curl的基本用法。注意CURLOPT_RETURNTRANSFER选项十分重要,作用为执行curl_exec函数时,是否返回curl传输内容到变量,默认为否,会直接将内容输出网页。
<?php
// 创建一个curl句柄
$ch = curl_init();
// 设置访问的URL
curl_setopt($ch, CURLOPT_URL, "http://aiezu.com");
// 将curl请求执行时,将结果返回,而不是直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 执行curl请求,返回结果到变量
$html = curl_exec($ch);
// 关闭curl句柄
curl_close($ch);
echo strlen($html);
运行结果:
96161
 

三、PHP curl GET请求和POST请求:

1、php curl get请求:

<?php
$data = array('sex'=>1, 'age'=>18);
$url = sprintf("http://aiezu.com/test.php?%s", http_build_query($data));
// $url: http://aiezu.com/test.php?sex=1&age=18

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$html = curl_exec($ch);
curl_close($ch);
echo $html;
输出结果:
[REQUEST_METHOD]: GET

$_GET:
Array
(
[sex] => 1
[age] => 18
)
 
2、php curl post 提交数据:
<?php
$data = array('name'=>'爱E族', 'domain'=>'aiezu.com');
$url = "http://aiezu.com/test.php";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// 告诉curl使用POST的方式提交
curl_setopt($ch, CURLOPT_POST, 1);
// 设置要POST提交的数据
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

$html = curl_exec($ch);
curl_close($ch);
echo $html;
输出结果:
[REQUEST_METHOD]: POST
[CONTENT_LENGTH]: 250
[CONTENT_TYPE]: multipart/form-data; boundary=----------------------------39f5fe9c583c

$_POST:
Array
(
[name] => 爱E族
[domain] => aiezu.com
)
 

四、PHP curl组件相关函数:

  PHP curl组件相关函数功能介绍:
 函数名函数介绍



curl_init【常用】初始化一个curl会话,返回一个curl句柄;
curl_setopt【常用】设置curl选项,具体选项介绍请参考php官方介绍:curl_setopt;
curl_setopt_array【常用】使用数组的方式批量设置curl选项;
curl_copy_handle克隆一个curl句柄和它的所有选项;
curl_exec【常用】执行curl会话;
curl_pause 暂停并取消暂停一个连接(PHP 5.5以上版本);
curl_reset将curl句柄的所有curl选项重置为默认值(PHP 5.5以上版本);
curl_getinfo获取curl最后会话信息,包含消耗时间、上传下载字节数、传输速度等信息;
curl_errno返回curl会话最后一次的数字错误代码;
curl_error返回curl会话最后一次的字符串错误描述;
curl_strerror通过curl数字错误代码返回字符串描述(PHP 5.5以上版本);
curl_close【常用】关闭curl会话;
curl_escape 对指定字符串进行URL编码(PHP 5.5以上版本);
curl_unescape 对指定字符串进行URL解码(PHP 5.5以上版本);
curl_version以数组的形式返回php curl版本信息;


curl_multi_init创建一个curl批处理句柄(并发请求);
curl_multi_add_handle向curl批处理句柄中添加单独的curl句柄;
curl_multi_remove_handle从curl批处理句柄中移除某个curl句柄;
curl_multi_setopt为curl批处理句柄设置选项;
curl_multi_exec执行curl批处理句柄;
curl_multi_info_read尝试从curl批处理句柄中获取 新curl子请求的完成信息;
curl_multi_getcontent读取curl批处理句柄中curl子句柄的请求返回内容;
curl_multi_close关闭curl批处理句柄;
curl_multi_select 等待所有curl批处理中的活动连接;
curl_multi_strerror通过curl批处理数字错误代码返回字符串描述(PHP 5.5以上版本);



curl_share_init初始化一个curl共享句柄(PHP 5.5以上版本);
curl_share_setopt为 curl共享句柄设置选项(PHP 5.5以上版本);
curl_share_close关闭curl共享句柄(PHP 5.5以上版本);

curl_file_create创建一个curlfile对象(PHP 5.5以上版本);
 

五、参考资料:

php unicode与中文互转

PHPllslx520 发表了文章 • 0 个评论 • 197 次浏览 • 2017-05-05 23:15 • 来自相关话题

一、使用json_encode和json_decode函数:1、使用json_decode()函数将unicode编码转换为中文汉字:<?php
$str = "\u597d\u597d\u5b66\u4e60\u5929\u5929\u5411\u4e0a";
# echo json_decode($str); # 错误
echo json_decode(sprintf('"%s"', $str)); #正确输出:好好学习天天向上注意:需要在要转换成中文的unicode字符串两边添加双引号后,才能使用json_decode()正确的转换成中文。 
 2、使用json_encode()函数将中文转换为unicode编码:<?php
$str = "爱E族:aiezu.com";
echo json_encode($str);输出:"\u7231E\u65cf\uff1aaiezu.com"注意:使用json_encode()函数将中文转换成unicode编码后,首尾会多出两个双引号,需要自行去掉。 查看全部

一、使用json_encodejson_decode函数:

1、使用json_decode()函数将unicode编码转换为中文汉字:

<?php
$str = "\u597d\u597d\u5b66\u4e60\u5929\u5929\u5411\u4e0a";
# echo json_decode($str); # 错误
echo json_decode(sprintf('"%s"', $str)); #正确
输出:
好好学习天天向上
注意:需要在要转换成中文的unicode字符串两边添加双引号后,才能使用json_decode()正确的转换成中文。 
 

2、使用json_encode()函数将中文转换为unicode编码:

<?php
$str = "爱E族:aiezu.com";
echo json_encode($str);
输出:
"\u7231E\u65cf\uff1aaiezu.com"
注意:使用json_encode()函数将中文转换成unicode编码后,首尾会多出两个双引号,需要自行去掉。

Linux Vim代码格式化/美化插件vim-autoformat安装

Linuxllslx520 发表了文章 • 0 个评论 • 472 次浏览 • 2017-04-25 21:05 • 来自相关话题

  vim-autoformat是Vim的一款代码自动化格式插件,vim-autoformat会根据文件的后缀,自动调用相应的相应命令进行代码格式化。所以,安装vim-autoformat的同时,还需要安装相应代码语言的格式化工具,才能保证vim-autoformat的正常运行。
 一、安装vim插件管理器:  为了方便插件安装,我们需要先安装vim插件管理器。这里我们使用"Vundle"作为vim的 插件管理器,安装 方法这里不再做介绍,请参考:Linux Vim插件管理器Vundle安装和使用
 二、安装vim-autoformat插件:1、安装vim-autoformat:  安装好Vundle插件管理器后,我们就能非常方便的安装插件了。在~/.vimrc文件"call vundle#begin()" 到 "call vundle#end()"件的范围内,添加一行"Plugin 'Chiel92/vim-autoformat'",如下所示:call vundle#begin()

" Vundle 本身就是一个插件
Plugin 'gmarik/Vundle.vim'
Plugin 'Chiel92/vim-autoformat'

"所有插件都应该在这一行之前
call vundle#end()添加好并保存后,重新运行vim命令,在vim中运行:PluginInstall命令即可完成vim-autoformat插件的安装。
 2、配置vim-autoformat插件:  在~/.vimrc文件末尾添加下面内容,将F3键设置为代码格式话键。"F5自动格式化代码
noremap <F3> :Autoformat<CR>
let g:autoformat_verbosemode=1也可以通过下面方式,设置保存时自动对指定格式代码进行格式化,或对所有格式进行格式化。"保存时自动格式化代码,针对所有支持的文件
au BufWrite * :Autoformat
"保存时自动格式化PHP代码
"au BufWrite *.php :Autoformat 
还可以对指定后缀的文件名,使用指定的格式化话工具。如下为html文件指定格式化工具和参数:let g:formatdef_my_html = '"html-beautify -s"'
let g:formatters_html = ['my_html'] 三、安装各语言格式化支持工具:1、html、Javascript/JSON、css:  htm、js、css 格式化命令分别为html-beautify、js-beautify、css-beautify:yum -y install npm
npm install html-beautify
npm install js-beautify
npm install css-beautify 2、ruby语言:#rbeautify for Ruby. It is shipped with ruby-beautify
yum -y install gem
gem install ruby-beautify 3、 C, C++, Objective-C:  C, C++, Objective-C等语言进行格式化,可以使用 clang-format​,而clang-format包含在clang包中:      #clang-format for C, C++, Objective-C
yum -y install clang 4、Java和C#, C++, C 等:# astyle for C#, C++, C and Java:
wget https://sourceforge.net/projects/astyle/files/astyle/astyle%203.0/astyle_3.0_linux.tar.gz/download -O astyle_3.0_linux.tar.gz
tar -zxvf astyle_3.0_linux.tar.gz
cd astyle/build/gcc
yum install gcc-c++
make && make install 5、更多语言:  请参考:https://github.com/Chiel92/vim-autoformat
 四、vim-autoformat插件的使用:  按上面配置好,并安装相应语言的格式化工具后,使用vim编辑相应代码文件,按F3命令vim即会对代码自动进行格式化。 查看全部
  vim-autoformat是Vim的一款代码自动化格式插件,vim-autoformat会根据文件的后缀,自动调用相应的相应命令进行代码格式化。所以,安装vim-autoformat的同时,还需要安装相应代码语言的格式化工具,才能保证vim-autoformat的正常运行。
 

一、安装vim插件管理器:

  为了方便插件安装,我们需要先安装vim插件管理器。这里我们使用"Vundle"作为vim的 插件管理器,安装 方法这里不再做介绍,请参考:Linux Vim插件管理器Vundle安装和使用
 

二、安装vim-autoformat插件:

1、安装vim-autoformat:

  安装好Vundle插件管理器后,我们就能非常方便的安装插件了。在~/.vimrc文件"call vundle#begin()" 到 "call vundle#end()"件的范围内,添加一行"Plugin 'Chiel92/vim-autoformat'",如下所示:
call vundle#begin()

" Vundle 本身就是一个插件
Plugin 'gmarik/Vundle.vim'
Plugin 'Chiel92/vim-autoformat'

"所有插件都应该在这一行之前
call vundle#end()
添加好并保存后,重新运行vim命令,在vim中运行:PluginInstall命令即可完成vim-autoformat插件的安装。
 

2、配置vim-autoformat插件:

  在~/.vimrc文件末尾添加下面内容,将F3键设置为代码格式话键。
"F5自动格式化代码
noremap <F3> :Autoformat<CR>
let g:autoformat_verbosemode=1
也可以通过下面方式,设置保存时自动对指定格式代码进行格式化,或对所有格式进行格式化。
"保存时自动格式化代码,针对所有支持的文件
au BufWrite * :Autoformat
"保存时自动格式化PHP代码
"au BufWrite *.php :Autoformat
 
还可以对指定后缀的文件名,使用指定的格式化话工具。如下为html文件指定格式化工具和参数:
let g:formatdef_my_html = '"html-beautify -s"'
let g:formatters_html = ['my_html']
 

三、安装各语言格式化支持工具:

1、html、Javascript/JSON、css:

  htm、js、css 格式化命令分别为html-beautify、js-beautify、css-beautify:
yum -y install npm
npm install html-beautify
npm install js-beautify
npm install css-beautify
 

2、ruby语言:

#rbeautify for Ruby. It is shipped with ruby-beautify
yum -y install gem
gem install ruby-beautify
 

3、 C, C++, Objective-C:

  C, C++, Objective-C等语言进行格式化,可以使用 clang-format​,而clang-format包含在clang包中:      
#clang-format for C, C++, Objective-C 
yum -y install clang
 

4、Java和C#, C++, C 等:

# astyle for C#, C++, C and Java:
wget https://sourceforge.net/projects/astyle/files/astyle/astyle%203.0/astyle_3.0_linux.tar.gz/download -O astyle_3.0_linux.tar.gz
tar -zxvf astyle_3.0_linux.tar.gz
cd astyle/build/gcc
yum install gcc-c++
make && make install
 

5、更多语言:

  请参考:https://github.com/Chiel92/vim-autoformat
 

四、vim-autoformat插件的使用:

  按上面配置好,并安装相应语言的格式化工具后,使用vim编辑相应代码文件,按F3命令vim即会对代码自动进行格式化。

Linux Vim插件管理器Vundle安装和使用

Linuxllslx520 发表了文章 • 0 个评论 • 329 次浏览 • 2017-04-25 20:08 • 来自相关话题

  Vundle是vim的一个插件管理器, 同时它本身也是vim的一个插件。插件管理器用于方便、快速的安装、删除、Vim更新插件。vim Vundle插件官方地址:https://github.com/VundleVim/Vundle.vim
 一、下载Vundle插件:  Vundle需要使用git命令来克隆安装,如果无git命令,可以使用"yum -y install git"安装git命令。有git命令的,直接克隆Vundle:mkdir -p ~/.vim/bundle
git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim 二、编辑~/.vimrc文件设置插件:  运行“vim ~/.vimrc”命令创建".vimrc"文件,并在文件中添加如下内容,并保存退出:syntax on
" tab宽度和缩进同样设置为4
set tabstop=4
set softtabstop=4
set shiftwidth=4

set nocompatible

" 你在此设置运行时路径
set rtp+=~/.vim/bundle/Vundle.vim

call vundle#begin()

" 在这里面输入安装的插件
" Vundle 本身就是一个插件
Plugin 'gmarik/Vundle.vim'


"所有插件都应该在这一行之前
call vundle#end()

" filetype off
filetype plugin indent on提示:如果使用粘贴方法复制到到.vimrc发现格式混乱,可以在shell中使用"cat <<END> ~/.vimrc"命令,然后粘贴代码,在输出"END"回车即可。
 三、安装Vundle插件:  ".vimrc"文件配置好后,打开vim,在命令模式输入插件安装命令“:PluginInstall”命令,vim就会自动安装“.vimrc”中配置的所有插件,直到vim底部出现“Done”安装完成。


四、Vundle插件用法介绍:
  下面命令在vim命令模式下运行。命令描述:PluginInstall安装~/.vimrc中"call vundle#begin()"到"call vundle#end()"范围内配置好的插件;:PluginClean清理已经从"call vundle#begin()"到"call vundle#end()"范围删除的插件。:PluginUpdate更新插件:PluginSearch 搜索插件,如":PluginSearch html"搜索包含html关键词的插件。
  查看全部
  Vundle是vim的一个插件管理器, 同时它本身也是vim的一个插件。插件管理器用于方便、快速的安装、删除、Vim更新插件。vim Vundle插件官方地址:https://github.com/VundleVim/Vundle.vim
 

一、下载Vundle插件:

  Vundle需要使用git命令来克隆安装,如果无git命令,可以使用"yum -y install git"安装git命令。有git命令的,直接克隆Vundle:
mkdir -p ~/.vim/bundle
git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
 

二、编辑~/.vimrc文件设置插件:

  运行“vim ~/.vimrc”命令创建".vimrc"文件,并在文件中添加如下内容,并保存退出:
syntax on
" tab宽度和缩进同样设置为4
set tabstop=4
set softtabstop=4
set shiftwidth=4

set nocompatible

" 你在此设置运行时路径
set rtp+=~/.vim/bundle/Vundle.vim

call vundle#begin()

" 在这里面输入安装的插件
" Vundle 本身就是一个插件
Plugin 'gmarik/Vundle.vim'


"所有插件都应该在这一行之前
call vundle#end()

" filetype off
filetype plugin indent on
提示:如果使用粘贴方法复制到到.vimrc发现格式混乱,可以在shell中使用"cat <<END> ~/.vimrc"命令,然后粘贴代码,在输出"END"回车即可。
 

三、安装Vundle插件:

  ".vimrc"文件配置好后,打开vim,在命令模式输入插件安装命令“:PluginInstall”命令,vim就会自动安装“.vimrc”中配置的所有插件,直到vim底部出现“Done”安装完成。
Linux_Vim插件管理器Vundle安装和使用.png

四、Vundle插件用法介绍:


  下面命令在vim命令模式下运行。
命令描述
:PluginInstall安装~/.vimrc中"call vundle#begin()"到"call vundle#end()"范围内配置好的插件;
:PluginClean清理已经从"call vundle#begin()"到"call vundle#end()"范围删除的插件。
:PluginUpdate更新插件
:PluginSearch 搜索插件,如":PluginSearch html"搜索包含html关键词的插件。

 

Vim快速为PHP代码文件头添加copyright版权信息

PHPllslx520 发表了文章 • 0 个评论 • 318 次浏览 • 2017-04-14 22:49 • 来自相关话题

1、修改~/.vimrc文件:  使用vim编辑~/.vimrc文件,在文件尾部添加如下代码:map <F4> :call TitleDet()<cr>'s
function AddTitle()
call append(1,"/*=============================================================================")
call append(2,"# Author: Aiezu.com - xxxx@qq.com")
call append(3,"# Last modified: " . strftime("%Y-%m-%d %H:%M"))
call append(4,"# Filename: " . expand("%:t"))
call append(5,"# Description: ")
call append(6,"=============================================================================*/")
echohl WarningMsg | echo "Successful in adding the copyright." | echohl None
endf

function UpdateTitle()
normal m'
execute '/# *Last modified:/s@:.*\=strftime(":\t%Y-%m-%d %H:%M")@'
normal ''
normal mk
execute '/# *Filename:/s@:.*\=":\t\t".expand("%:t")@'
execute "noh"
normal 'k
echohl WarningMsg | echo "Successful in updating the copy right." | echohl None
endfunction

function TitleDet()
let n=1
while n < 7
let line = getline(n)
if line =~ '^\#\s*\S*Last\smodified:\S*.*$'
call UpdateTitle()
return
endif
let n = n + 1
endwhile

call AddTitle()
endfunction上面代码中的append函数的第一个参数是在指定的行后面插入内容,这里从第一行后面开始插入(第一行留给"<?php")。 
 
小贴士:如果上面的代码粘贴到vim中格式乱了,可以使用shell中输入"cat <<END>> ~/.vimrc"回车,再粘贴代码,再输入字符"END",完成追加代码到文件。
 2、 快速添加版权信息测试:  按上面要求修改~/.vimrc文件并保存后,使用vim随便打开一个php文件,按F4,恭喜,神奇的一幕发生了。 查看全部

1、修改~/.vimrc文件:

  使用vim编辑~/.vimrc文件,在文件尾部添加如下代码:
map <F4> :call TitleDet()<cr>'s
function AddTitle()
call append(1,"/*=============================================================================")
call append(2,"# Author: Aiezu.com - xxxx@qq.com")
call append(3,"# Last modified: " . strftime("%Y-%m-%d %H:%M"))
call append(4,"# Filename: " . expand("%:t"))
call append(5,"# Description: ")
call append(6,"=============================================================================*/")
echohl WarningMsg | echo "Successful in adding the copyright." | echohl None
endf

function UpdateTitle()
normal m'
execute '/# *Last modified:/s@:.*\=strftime(":\t%Y-%m-%d %H:%M")@'
normal ''
normal mk
execute '/# *Filename:/s@:.*\=":\t\t".expand("%:t")@'
execute "noh"
normal 'k
echohl WarningMsg | echo "Successful in updating the copy right." | echohl None
endfunction

function TitleDet()
let n=1
while n < 7
let line = getline(n)
if line =~ '^\#\s*\S*Last\smodified:\S*.*$'
call UpdateTitle()
return
endif
let n = n + 1
endwhile

call AddTitle()
endfunction
上面代码中的append函数的第一个参数是在指定的行后面插入内容,这里从第一行后面开始插入(第一行留给"<?php")。 
 
小贴士:如果上面的代码粘贴到vim中格式乱了,可以使用shell中输入"cat <<END>> ~/.vimrc"回车,再粘贴代码,再输入字符"END",完成追加代码到文件。
 

2、 快速添加版权信息测试:

  按上面要求修改~/.vimrc文件并保存后,使用vim随便打开一个php文件,按F4,恭喜,神奇的一幕发生了。

Linux下Apache配置ssl让其支持https协议

Linuxllslx520 发表了文章 • 0 个评论 • 415 次浏览 • 2017-04-13 11:12 • 来自相关话题

一、实验环境:操作系统: CentOS Linux release 7.2.1511 (Core)
apache版本:Apache/2.4.6 (CentOS)
实验前提:Lamp(Linux、Apache、Mariadb、PHP)已经配置好,能正常访问http
 二、安装Apache Ssl模块:  要安装Apache ssl模块,使用yum命令安装openssl、mod_ssl包即可:yum install openssl mod_ssl -y 三、配置ssl证书:1、查看证书位置:  安装好后,会生成一个啊ssl.conf文件,完整路径为:/etc/httpd/conf.d/ssl.conf,在此配置文件中能找到当前的配置证书路径。[root@aiezu.com ~]# cat /etc/httpd/conf.d/ssl.conf|grep ^SSLCertificate
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key 2、生成新密钥和证书:  生成新证书前需要删除掉原来的证书,并让新证书的名称和路径与原证书相同,这样就无需修改ssl.conf配置文件即可完成证书修改。# 生成新私钥
cd /etc/pki/tls/private
rm -f localhost.key
openssl genrsa 1024 > localhost.key

# 生成新证书
cd /etc/pki/tls/certs/
rm -f localhost.crt
openssl req -new -x509 -days 365 -key /etc/pki/private/localhost.key -out localhost.crt 
在上面证书生成过程中,要交互输入如下信息:Country Name (2 letter code) [XX]: CN <--两位国家编码State or Province Name (full name) []: Hunan <--省、州名称Locality Name (eg, city) [Default City]: Changsha <-- 城市名称Organization Name (eg, company): aiezu.com <-- 机构单位名称Organizational Unit Name (eg, section) []:IT <-- 单位部门名称Common Name (eg, your name or your server's hostname) []:aiezu.com <--主机域名Email Address []:465272@qq.com <-- 电子邮箱 四、配置https虚拟主机:  下面以本站域名aiezu.com为例配置支持http、https的虚拟主机。使用vim编辑域名aiezu.com虚拟主机配置文件"/etc/httpd/conf.d/aiezu.com.conf",添加https 443端口的虚拟主机配置如下(17行开始的部分):<Directory /storage/web/aiezu.com>
AllowOverride All
Require all granted
</Directory>

<VirtualHost *:80>
AddDefaultCharset utf-8
ServerName aiezu.com
#强制将http 定向到 https
#Redirect permanent / https://aiezu.com/
ServerAdmin 465272@qq.com
DocumentRoot /storage/web/aiezu.com
CustomLog logs/aiezu.com-access combined
ErrorLog logs/aiezu.com-error
<IfModule mod_rewrite.c>
</IfModule>
</VirtualHost>

<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

AddDefaultCharset utf-8
ServerName aiezu.com:443
ServerAdmin 465272@qq.com
DocumentRoot /storage/web/aiezu.com
CustomLog logs/aiezu.com-ssl-access combined
ErrorLog logs/aiezu.com-ssl-error
</VirtualHost> 五、重启Apache服务:  编辑好后,重启apache服务,即可通过https://aiezu.com访问了。service httpd restart 六、附录(免费DV证书):  由于我们自己生成的证书是未经权威证书颁发机构授权的,所有通过https访问的时候,浏览器会提示证书错误,需要申请权威机构授权的证书。下面提供一些免费申请地址:阿里云:https://common-buy.aliyun.com/?spm=5176.7968328.231195.1.7FheST&commodityCode=cas#/buy腾讯云:https://console.qcloud.com/ssl 查看全部

一、实验环境:

操作系统: CentOS Linux release 7.2.1511 (Core)
apache版本:Apache/2.4.6 (CentOS)
实验前提:Lamp(Linux、Apache、Mariadb、PHP)已经配置好,能正常访问http
 

二、安装Apache Ssl模块:

  要安装Apache ssl模块,使用yum命令安装openssl、mod_ssl包即可:
yum install openssl mod_ssl -y
 

三、配置ssl证书:

1、查看证书位置:

  安装好后,会生成一个啊ssl.conf文件,完整路径为:/etc/httpd/conf.d/ssl.conf,在此配置文件中能找到当前的配置证书路径。
[root@aiezu.com ~]# cat /etc/httpd/conf.d/ssl.conf|grep ^SSLCertificate
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
 

2、生成新密钥和证书:

  生成新证书前需要删除掉原来的证书,并让新证书的名称和路径与原证书相同,这样就无需修改ssl.conf配置文件即可完成证书修改。
# 生成新私钥
cd /etc/pki/tls/private
rm -f localhost.key
openssl genrsa 1024 > localhost.key

# 生成新证书
cd /etc/pki/tls/certs/
rm -f localhost.crt
openssl req -new -x509 -days 365 -key /etc/pki/private/localhost.key -out localhost.crt
 
在上面证书生成过程中,要交互输入如下信息:
  • Country Name (2 letter code) [XX]: CN <--两位国家编码
  • State or Province Name (full name) []: Hunan <--省、州名称
  • Locality Name (eg, city) [Default City]: Changsha <-- 城市名称
  • Organization Name (eg, company): aiezu.com <-- 机构单位名称
  • Organizational Unit Name (eg, section) []:IT <-- 单位部门名称
  • Common Name (eg, your name or your server's hostname) []:aiezu.com <--主机域名
  • Email Address []:465272@qq.com <-- 电子邮箱
 

四、配置https虚拟主机:

  下面以本站域名aiezu.com为例配置支持http、https的虚拟主机。使用vim编辑域名aiezu.com虚拟主机配置文件"/etc/httpd/conf.d/aiezu.com.conf",添加https 443端口的虚拟主机配置如下(17行开始的部分):
<Directory /storage/web/aiezu.com>
AllowOverride All
Require all granted
</Directory>

<VirtualHost *:80>
AddDefaultCharset utf-8
ServerName aiezu.com
#强制将http 定向到 https
#Redirect permanent / https://aiezu.com/
ServerAdmin 465272@qq.com
DocumentRoot /storage/web/aiezu.com
CustomLog logs/aiezu.com-access combined
ErrorLog logs/aiezu.com-error
<IfModule mod_rewrite.c>
</IfModule>
</VirtualHost>

<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

AddDefaultCharset utf-8
ServerName aiezu.com:443
ServerAdmin 465272@qq.com
DocumentRoot /storage/web/aiezu.com
CustomLog logs/aiezu.com-ssl-access combined
ErrorLog logs/aiezu.com-ssl-error
</VirtualHost>
 

五、重启Apache服务:

  编辑好后,重启apache服务,即可通过https://aiezu.com访问了。
service httpd restart
 

六、附录(免费DV证书):

  由于我们自己生成的证书是未经权威证书颁发机构授权的,所有通过https访问的时候,浏览器会提示证书错误,需要申请权威机构授权的证书。下面提供一些免费申请地址:

html5 canvas 微信大转盘抽奖源码

微信源码liuliangsong 发表了文章 • 0 个评论 • 374 次浏览 • 2017-04-03 21:51 • 来自相关话题

用法介绍:  本源码简单易用,引用的js文件很少,需要改动的也很少,基本上可以说是拿来即用。转盘上奖品名字由js自动生成,无需在去动用PS软件,只需设置源码中turnplate对象的restaraunts、colors、icons三个数组即可(三个数组长度一致)。    var turnplate={
restaraunts:["5元现金", "谢谢参与", "小礼品一份","20元现金", "50元话费", "88元购物券"], //大转盘奖品名称
colors:["#FFF4D6", "#FFFFFF", "#FFF4D6", "#FFFFFF","#FFF4D6", "#FFFFFF"], //大转盘奖品区块对应图标ID
icons:["","icon-sorry","","","icon-recharge",""], //大转盘奖品区块对应背景颜色
outsideRadius:192, //大转盘外圆的半径
textRadius:155, //大转盘奖品位置距离圆心的距离
insideRadius:68, //大转盘内圆的半径
startAngle:0, //开始角度
bRotate:false //false:停止;ture:旋转
};
 演示图片:款式一


款式二



 下载地址: 查看全部

用法介绍:

  本源码简单易用,引用的js文件很少,需要改动的也很少,基本上可以说是拿来即用。转盘上奖品名字由js自动生成,无需在去动用PS软件,只需设置源码中turnplate对象的restaraunts、colors、icons三个数组即可(三个数组长度一致)。    
var turnplate={
restaraunts:["5元现金", "谢谢参与", "小礼品一份","20元现金", "50元话费", "88元购物券"], //大转盘奖品名称
colors:["#FFF4D6", "#FFFFFF", "#FFF4D6", "#FFFFFF","#FFF4D6", "#FFFFFF"], //大转盘奖品区块对应图标ID
icons:["","icon-sorry","","","icon-recharge",""], //大转盘奖品区块对应背景颜色
outsideRadius:192, //大转盘外圆的半径
textRadius:155, //大转盘奖品位置距离圆心的距离
insideRadius:68, //大转盘内圆的半径
startAngle:0, //开始角度
bRotate:false //false:停止;ture:旋转
};

 

演示图片:

  • 款式一
    html5_canvas大转盘抽奖源码(款式一).png
  • 款式二
    html5_canvas大转盘抽奖源码(款式二).png

 

下载地址:

windows下安装AnyProxy抓取移动App Http请求

Windowsllslx520 发表了文章 • 0 个评论 • 1382 次浏览 • 2017-03-29 18:38 • 来自相关话题

  AnyProxy是阿里巴巴基于 Node.js 开发的一款开源代理服务器。做为中间代理服务器,它可以收集所有经过它的http请求流量(包括https明文内容);它提供了友好的web界面,便于直观的查看经过它的http请求;同时它支持二次开发,可以用javascript控制整个代理的全部流程,便于前端调试和收集http请求页面内容。它可以用于移动app和移动web页面调试、 抓取。
 一、实验环境:操作系统: Windows 10 X64位
AnyPorxy版本: 3.10.4
 二、安装Node.js:  从Node.js官网下载最新版或者稳定版Node.js的msi文件后,双击安装,知道安装完成即可。
  三、安装和启动AnyProxy:1、安装AnyProxy:  安装好Node.js后,在windows的命令提示符中输入下面命令安装AnyProxy,耐心等待直到安装完成:npm install -g anyproxy 2、生成根证书(RootCA):  https需要证书才能以明文的方式显示请求内容,所有这里我们必须生成根证书。在cmd命令提示符中运行下面命令生成根证书:anyproxy --root 3、启动AnyProxy代理监听服务:  通过”anyproxy -i“命令启动代理监听,其中”-i“参数启用https请求内容解析。anyproxy -i通过上面命令启动AnyProxy代理监听服务服务后,AnyProxy会打开两个端口:8001端口:即代理服务端口, 本机的IP和8001用于设置代理,如:192.168.0.119:80018002端口:AnyProxy的web界面,通过浏览器打开http://192.168.0.119:8002的形式,即可查看所有经过AnyProxy代理的http请求。




 四、设置代理(手机端):1、安装证书  我们需要在被代理的手机上安装证书,这样在AnyProxy上才能以明文的方式查看https请求内容。在手机上安装证书有两种方式:直接在手机浏览器中打开"http://ip:8002/fetchCrtFile"(IP换成安装AnyProxy机器的IP)在安装AnyProxy主机上打开”http://localhost:8002/qr_root“,然后用微信 扫描二维码,再通过微信在浏览器中打开的方式安装证书(必须在微信中跳转到浏览器中打开,否则弹不出安装证书对话框)。 2、设置代理(以ios举例):  在手机wifi设置中,手动设置http代理,在服务器中输入安装上面的代理IP,端口输入8001,保存即可。这样在此手机上所有的http请求(包括Web站点和收集app,如微信中的http请求),都会通过AnyProxy代理。在安装AnyProxy的电脑上,打开”http://localhost:8002”,即可看到所有被代理的http请求。 查看全部
  AnyProxy是阿里巴巴基于 Node.js 开发的一款开源代理服务器。做为中间代理服务器,它可以收集所有经过它的http请求流量(包括https明文内容);它提供了友好的web界面,便于直观的查看经过它的http请求;同时它支持二次开发,可以用javascript控制整个代理的全部流程,便于前端调试和收集http请求页面内容。它可以用于移动app和移动web页面调试、 抓取。
 

一、实验环境:

操作系统: Windows 10 X64位
AnyPorxy版本: 3.10.4
 

二、安装Node.js:

  从Node.js官网下载最新版或者稳定版Node.js的msi文件后,双击安装,知道安装完成即可。
  

三、安装和启动AnyProxy:

1、安装AnyProxy:

  安装好Node.js后,在windows的命令提示符中输入下面命令安装AnyProxy,耐心等待直到安装完成:
npm install -g anyproxy
 

2、生成根证书(RootCA):

  https需要证书才能以明文的方式显示请求内容,所有这里我们必须生成根证书。在cmd命令提示符中运行下面命令生成根证书:
anyproxy --root
 

3、启动AnyProxy代理监听服务:

  通过”anyproxy -i“命令启动代理监听,其中”-i“参数启用https请求内容解析。
anyproxy -i
通过上面命令启动AnyProxy代理监听服务服务后,AnyProxy会打开两个端口:
  • 8001端口:即代理服务端口, 本机的IP和8001用于设置代理,如:192.168.0.119:8001
  • 8002端口:AnyProxy的web界面,通过浏览器打开http://192.168.0.119:8002的形式,即可查看所有经过AnyProxy代理的http请求。

windows下安装AnyProxy.png

 

四、设置代理(手机端):

1、安装证书

  我们需要在被代理的手机上安装证书,这样在AnyProxy上才能以明文的方式查看https请求内容。在手机上安装证书有两种方式:
  1. 直接在手机浏览器中打开"http://ip:8002/fetchCrtFile"(IP换成安装AnyProxy机器的IP)
  2. 在安装AnyProxy主机上打开”http://localhost:8002/qr_root“,然后用微信 扫描二维码,再通过微信在浏览器中打开的方式安装证书(必须在微信中跳转到浏览器中打开,否则弹不出安装证书对话框)。
 

2、设置代理(以ios举例):

  在手机wifi设置中,手动设置http代理,在服务器中输入安装上面的代理IP,端口输入8001,保存即可。这样在此手机上所有的http请求(包括Web站点和收集app,如微信中的http请求),都会通过AnyProxy代理。在安装AnyProxy的电脑上,打开”http://localhost:8002”,即可看到所有被代理的http请求。
windows下安装AnyProxy_view.png