/**
* 模拟客户端请求,抓取网站或者接口数据
* 以抓取某视频网站的播放地址为例,首先我是通过fiddler抓包找到该视频网站获
* 取数据的接口和请求参数类型的,
* 但是直接模拟请求提示客户端版本太低,所以我就复制了header请求参数
**/
public function play_link($video_id){
//该网站的接口地址;
$url = 'http://xx.com/video/getVideoPlayLinkByVideoId';
//模拟header内容
$header = array(
'Host: web.tv',
'Connection: keep-alive',
'Content-Length: 14',
'Accept: application/json, text/plain, */*',
'Origin: http://www.tv',
'clientVersion: 0.1.0',
'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
'clientType: web',
'Content-Type: application/x-www-form-urlencoded; charset=UTF-8',
'Referer: http://www.tv/',
'Accept-Encoding: gzip, deflate',
'Accept-Language: zh-CN,zh;q=0.9',
'Cookie: JSESSIONID=A895974885A1D0ED9CC91C84C73FC074'
);
//post请求参数
$content = array(
'videoId' => $video_id
);
//curl模拟提交
$response = self::tocurl($url, $header, $content);
$response = json_decode($response,true);
return $response;
}
/**
* curl提交数据
* @param String $url 请求的地址
* @param Array $header 自定义的header数据
* @param Array $content POST的数据
* @return String
*/
function tocurl($url, $header, $content){
$ch = curl_init();
if(substr($url,0,5)=='https'){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($content));
$response = curl_exec($ch);
if($error=curl_error($ch)){
die($error);
}
curl_close($ch);
return $response;
}
php模拟客户端请求,抓取网站或者接口数据
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 本主题写一个简单的程序,抓取浏览器请求数据。从而了解HTTP协议的格式。本主题使用的技术:Socket编程;IO异...
- 我们做开发一般都是在PC端,然而我们很多时候需要模拟移动端进行接口请求。 比如,当一个API需要根据用户不同的终端...