Heim > Artikel > Backend-Entwicklung > 微信公众平台之CURL应用_PHP教程
本文章来给各位同学介绍一下关于微信公众平台之CURL应用实例,如果你碰到此类问题不防进入参考一下吧。
这几天工作有大量用curl,curl就是模拟浏览器来传输数据,他支持很多的协议HTPP,HTTPS,FTP….等等很多协议,在做采集和模拟用户来执行一些操作的时候非常有用的。
使用CURL主要是四个步骤:
1、初始化URL
2、设置请求的一些参数(COOKIE,HEAD…)
3、执行请求
4、关闭资源
先说一个简单的采集,一般在获取一个网页的内容的时候我们最方便就是使用file_get_contents()函数来获取,现在我们通过CURL来抓取一个网页的内容
代码如下 | 复制代码 |
$ch = curl_init();//初始化一个资源 |
注:重点在于curl_setopt()这个函数的第二个参数(下面会有一些常用的资料)
这样我们就可以得到这个网页的内容,如果只有CURL来做些这就大材小用了,CURL其实可以用来做更加神奇的东西。
最近刚到一家创业型的新公司(尼玛,选择这个公司真的是比较纠结,因为手里有好几个offer,但是这边给的工资待遇很低,因为创业型公司吗。我也不知道为什么会选择这家公司,反正是为了选择这家公司,朋友都很不解,其实我也不知道为什么会选择这家,其他公司的工资大概是这家公司的两倍,希望这次没有选错,不然.想死的心都会有,说了这么多废话),做的是现在比较火的微信公众平台的开发,因为微信现在开放的接口特别的少,所以通过接口得到的东西特别的少(尼玛,小马哥你什么时候多放的借口啊!),但是官方提供的操作平台有很多接口中没有数据所以,我们需要去自己去找一些数据了,好吧,主角上场CURL。
首先公众平台是要登录才能访问,那我就先登录吧(废话),首先需要抓包分析一下正常提交数据,这里我就不截图了(博客在bae平台上,编辑器还没有时间去理他,不太好使),通过抓包分析得出,微信的公众平台使用的是ajax登录,且密码在提交之前已经进行了md5加密(好像正规应该叫md5散列把,而且标准的MD5散列应该是128位的,不过为了方便存储和传输就现在最多的就是32和16位了,刚了解,惭愧),还有很重要一点就是,微信公众平台采用的是https协议进行登录的。最爽的一点就是不用验证码,sogay。不然老费劲了,分析到这就可以了。Come on !!!!
代码如下 | 复制代码 |
//这里的头信息都是必须要设置的,这些你都可以在刚才抓包的时候获取到
$ch = curl_init(); curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);//设置cookie的保存目录,这里很重要,你懂的(cookie你都不存,你以为你是麻花腾啊!) //获取到token的值 $loginData = json_decode($loginData,true); $token = explode("=",$loginData['ErrMsg']); $token = array_pop($token); echo "登录微信系统成功
|
上边就是登录微信公众平台的代码了,经测试十分好用+_+。
这几天微信公众平台接触的比较多,这个只是万里长征的第一步,后边我会分享一下如何将微信的fakeid 和 openid对应起来,实现自己可以自己的平台上显示用户的完整信息(据我了解,网上现在对于如何fakeid 和 openid对应来没有很好的解决方案,通过好几天的奋斗现在已经可以对应起来的,比较麻烦,且已有的用户是无法对起来的(其实这个理论上是可以的,但是没有做出来不乱说,其实是没有时间去做这个,有机会可以尝试,不过实现需要已有系统的支持,也就是你现在的系统必须记录了和用回的聊天记录(我说什么了?我什么都没有说!)))。
体育老师啊,你说你不好好带你的体育课,没有跑来教我们语文,这几天接触不少能写的东西太多了,所以想到那就写到那了,有点乱,几天主要用的是CURL,所以今天说点CURL的实例,正好就把手头的登录微信公众平台的东西写上来了,CURL到此结束,后边我可能会写更多关于微信公众平台的东西。
附:
选项 |
可选value值 |
备注 |
CURLOPT_AUTOREFERER |
当根据Location:重定向时,自动设置header中的Referer:信息。 |
|
CURLOPT_BINARYTRANSFER |
在启用CURLOPT_RETURNTRANSFER的时候,返回原生的(Raw)输出。 |
|
CURLOPT_COOKIESESSION |
启用时curl会仅仅传递一个session cookie,忽略其他的cookie,默认状况下cURL会将所有的cookie返回给服务端。session cookie是指那些用来判断服务器端的session是否有效而存在的cookie。 |
|
CURLOPT_CRLF |
启用时将Unix的换行符转换成回车换行符。 |
|
CURLOPT_DNS_USE_GLOBAL_CACHE |
启用时会启用一个全局的DNS缓存,此项为线程安全的,并且默认启用。 |
|
CURLOPT_FAILONERROR |
显示HTTP状态码,默认行为是忽略编号小于等于400的HTTP信息。 |
|
CURLOPT_FILETIME |
启用时会尝试修改远程文档中的信息。结果信息会通过curl_getinfo()函数的CURLINFO_FILETIME选项返回。 curl_getinfo(). |
|
CURLOPT_FOLLOWLOCATION |
启用时会将服务器服务器返回的"Location: "放在header中递归的返回给服务器,使用CURLOPT_MAXREDIRS可以限定递归返回的数量。 |
|
CURLOPT_FORBID_REUSE |
在完成交互以后强迫断开连接,不能重用。 |
|
CURLOPT_FRESH_CONNECT |
强制获取一个新的连接,替代缓存中的连接。 |
|
CURLOPT_FTP_USE_EPRT |
启用时当FTP下载时,使用EPRT (或 LPRT)命令。设置为FALSE时禁用EPRT和LPRT,使用PORT命令 only. |
|
CURLOPT_FTP_USE_EPSV |
启用时,在FTP传输过程中回复到PASV模式前首先尝试EPSV命令。设置为FALSE时禁用EPSV命令。 |
|
CURLOPT_FTPAPPEND |
启用时追加写入文件而不是覆盖它。 |
|
CURLOPT_FTPASCII |
CURLOPT_TRANSFERTEXT的别名。 |
|
CURLOPT_FTPLISTONLY |
启用时只列出FTP目录的名字。 |
|
CURLOPT_HEADER |
启用时会将头文件的信息作为数据流输出。 |
|
CURLINFO_HEADER_OUT |
启用时追踪句柄的请求字符串。 |
从 PHP 5.1.3 开始可用。CURLINFO_前缀是故意的(intentional)。 |
CURLOPT_HTTPGET |
启用时会设置HTTP的method为GET,因为GET是默认是,所以只在被修改的情况下使用。 |
|
CURLOPT_HTTPPROXYTUNNEL |
启用时会通过HTTP代理来传输。 |
|
CURLOPT_MUTE |
启用时将cURL函数中所有修改过的参数恢复默认值。 |
|
CURLOPT_NETRC |
在连接建立以后,访问~/.netrc文件获取用户名和密码信息连接远程站点。 |
|
CURLOPT_NOBODY |
启用时将不对HTML中的BODY部分进行输出。 |
|
CURLOPT_NOPROGRESS |
启用时关闭curl传输的进度条,此项的默认设置为启用。 Note:PHP自动地设置这个选项为TRUE,这个选项仅仅应当在以调试为目的时被改变。
|
|
CURLOPT_NOSIGNAL |
启用时忽略所有的curl传递给php进行的信号。在SAPI多线程传输时此项被默认启用。 |
cURL 7.10时被加入。 |
CURLOPT_POST |
启用时会发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。 |
|
CURLOPT_PUT |
启用时允许HTTP发送文件,必须同时设置CURLOPT_INFILE和CURLOPT_INFILESIZE。 |
|
CURLOPT_RETURNTRANSFER |
将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。 |
|
CURLOPT_SSL_VERIFYPEER |
禁用后cURL将终止从服务端进行验证。使用CURLOPT_CAINFO选项设置证书使用CURLOPT_CAPATH选项设置证书目录 如果CURLOPT_SSL_VERIFYPEER(默认值为2)被启用,CURLOPT_SSL_VERIFYHOST需要被设置成TRUE否则设置为FALSE。 |
自cURL 7.10开始默认为TRUE。从cURL 7.10开始默认绑定安装。 |
CURLOPT_TRANSFERTEXT |
启用后对FTP传输使用ASCII模式。对于LDAP,它检索纯文本信息而非HTML。在Windows系统上,系统不会把STDOUT设置成binary模式。 |
|
CURLOPT_UNRESTRICTED_AUTH |
在使用CURLOPT_FOLLOWLOCATION产生的header中的多个locations中持续追加用户名和密码信息,即使域名已发生改变。 |
|
CURLOPT_UPLOAD |
启用后允许文件上传。 |
|
CURLOPT_VERBOSE |