localhost跨域获取cookies

百无禁忌_ 2017-07-28 06:23:31
大神求解
我在本地用CURL模拟请求一个接口,需要传入优酷的cookies才可以返回数据,但是现在只能获取到domain=localhost的cookie,需要怎么做呢?
...全文
675 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongmei85 2017-07-31
  • 打赏
  • 举报
回复
代码第10行换个地址看能不能取到,例如'http://www.youku.com'
百无禁忌_ 2017-07-31
  • 打赏
  • 举报
回复
引用 2 楼 hongmei85 的回复:
一个locahost获得百度cookie的例子
<?php
$url = 'https://sp0.baidu.com/9_Q4sjW91Qh3otqbppnN2DJv/pae/channel/data/asyncqury?appid=4001&com=zhongtong&nu=447159978130&vcode=&token=&_=1487674429';
  
//获取-开始----------
$cookie = tempnam("/tmp", "cookie");
$t = parse_url($url);
  
//先获取 cookie
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "$t[scheme]://$t[host]/");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie);
curl_exec($curl);
  
//再获取数据
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie);
$data = curl_exec($curl);
curl_close($curl);
//获取-结束----------
 
 
 print_r(json_decode($data, true));
?>
我用这个方法,问题出在获取cookie上。在这一步,我查看了tmp文件,是拿不到cookie的,请问是什么原因呢? 我试过两个url,http://ups.youku.com/ups/get.json?vid=XMTQ4ODM5Mjk2MA==&ct=10&ccode=0502&client_ip=0.0.0.0&utid=Ga3jEdWulXoCAXZwOs6IYOEY&client_ts=1501211617,这个我只有在postman上面才可以请求成功,而百度的那个可以直接请求的,是不是接口的原因呢?
百无禁忌_ 2017-07-31
  • 打赏
  • 举报
回复
引用 4 楼 hongmei85 的回复:
代码第10行换个地址看能不能取到,例如'http://www.youku.com'
我也是这个思路,换了baidu.com taobao.com可以取到,换youku.com相关的都取不到。 我自己模拟了优酷的cookie,常识直接获取,也无果。。。
	header("Content-type: text/html; charset=utf-8");
	$headers = array(
	    'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36',
	    'Referer'    => 'http://static.youku.com/',
	);

	//$url='http://ups.youku.com/ups/get.json?vid='.$_GET['vid'].'&ct=10&ccode=0502&client_ip=0.0.0.0&utid=Ga3jEdWulXoCAXZwOs6IYOEY&client_ts='.time();
	$url = 'http://ups.youku.com/ups/get.json?vid=XMTQ4ODM5Mjk2MA==&ct=10&ccode=0502&client_ip=0.0.0.0&utid=Ga3jEdWulXoCAXZwOs6IYOEY&client_ts=1501211617';
	$cookie = __DIR__."/tmp/ukucoo.tmp";

	//再获取数据
	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, $url);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
	curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie);
	curl_setopt($curl, CURLOPT_HEADER, true);
	curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 120);
	curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);


	$data = curl_exec($curl);
	curl_close($curl);
	//获取-结束----------
	 
	print_r(json_decode($data, true));
COOKIE的tmp文件
# Netscape HTTP Cookie File
# https://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

.youku.com	TRUE	/	FALSE	3648956994	__ysuid	1501032485763wiV
.youku.com	TRUE	/	FALSE	3648956994	juid	01blumi3qg17ds
.youku.com	TRUE	/	FALSE	3648956994	cna	gJr9EdGc7UYCAXZwOkfLN7Sb
.youku.com	TRUE	/	FALSE	3648956994	__ayft	1501467801335
.youku.com	TRUE	/	FALSE	3648956994	__aysid	1501467801335TJ3
.youku.com	TRUE	/	FALSE	3648956994	__arpvid	1501467801335B36wD3-1501467801341
.youku.com	TRUE	/	FALSE	3648956994	__arycid	cms-00-1519-23042-0
.youku.com	TRUE	/	FALSE	3648956994	__ayscnt	1
.youku.com	TRUE	/	FALSE	3648956994	__arcms	cms-00-1519-23042-0
.youku.com	TRUE	/	FALSE	3648956994	__aypstp	1
.youku.com	TRUE	/	FALSE	3648956994	__ayspstp	1
.youku.com	TRUE	/	FALSE	3648956994	ypvid	1501467801537Zlpo6O
.youku.com	TRUE	/	FALSE	3648956994	yseid	15014678015385rbHdy
.youku.com	TRUE	/	FALSE	3648956994	ysestep	1
.youku.com	TRUE	/	FALSE	3648956994	yseidcount	3
.youku.com	TRUE	/	FALSE	3648956994	yseidtimeout	1501475001538
.youku.com	TRUE	/	FALSE	3648956994	ycid	0
.youku.com	TRUE	/	FALSE	3648956994	ystep	13
.youku.com	TRUE	/	FALSE	3648956994	seid	01bmb78tu51mme
.youku.com	TRUE	/	FALSE	3648956994	referhost	https%3A%2F%2Fwww.youku.com
.youku.com	TRUE	/	FALSE	3648956994	seidtimeout	1501469601541
.youku.com	TRUE	/	FALSE	3648956994	P_ck_ctl	991BF232EBC68A431B0C2C5C79E7A1AB
.youku.com	TRUE	/	FALSE	3648956994	isg	AggI53tcxVVqnynXWeG2kctU2XbaGWyPv62eysK5VAN2nagHasE8S56fY0IX
hongmei85 2017-07-28
  • 打赏
  • 举报
回复
一个locahost获得百度cookie的例子
<?php
$url = 'https://sp0.baidu.com/9_Q4sjW91Qh3otqbppnN2DJv/pae/channel/data/asyncqury?appid=4001&com=zhongtong&nu=447159978130&vcode=&token=&_=1487674429';
  
//获取-开始----------
$cookie = tempnam("/tmp", "cookie");
$t = parse_url($url);
  
//先获取 cookie
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "$t[scheme]://$t[host]/");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie);
curl_exec($curl);
  
//再获取数据
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie);
$data = curl_exec($curl);
curl_close($curl);
//获取-结束----------
 
 
 print_r(json_decode($data, true));
?>
百无禁忌_ 2017-07-28
  • 打赏
  • 举报
回复


	$headers = array(
		//'GET' =>'/ups/get.json?vid=XMTQ4ODM5Mjk2MA==&ct=10&ccode=0502&client_ip=0.0.0.0&utid=Ga3jEdWulXoCAXZwOs6IYOEY&client_ts=1501211617 HTTP/1.1',
	    'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36',
	    'Referer'    => 'http://static.youku.com/',
	);

	//$url='http://localhost/test.php';
	//$url='http://ups.youku.com/ups/get.json?vid='.$_GET['vid'].'&ct=10&ccode=0502&client_ip=0.0.0.0&utid=Ga3jEdWulXoCAXZwOs6IYOEY&client_ts='.time();
	$url = 'http://ups.youku.com/ups/get.json?vid=XMTQ4ODM5Mjk2MA==&ct=10&ccode=0502&client_ip=0.0.0.0&utid=Ga3jEdWulXoCAXZwOs6IYOEY&client_ts=1501211617';
	$ch = curl_init($url);
	//curl_setopt($ch, CURLOPT_USERAGENT, 'User-Agent,Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'); 
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_HEADER, true);
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
	curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
	curl_setopt($ch, CURLOPT_COOKIE,'__ysuid=1501032485763wiV; juid=01blumi3qg17ds; yseid=15012259271305idf3d; yseidcount=2; seid=01bm40jgeu15ch; cna=gJr9EdGc7UYCAXZwOkfLN7Sb; __ayft=1501225926976; __aysid=1501225926976SN1; __arpvid=1501226517305PSEVWa-1501226517312; __arycid=cms-00-1519-23042-0; __ayscnt=1; __arcms=cms-00-1519-23042-0; __aypstp=5; __ayspstp=5; ypvid=1501226517417BjE0Zm; ysestep=5; yseidtimeout=1501233717418; ycid=0; ystep=11; referhost=; seidtimeout=1501228317421; P_ck_ctl=A7E828D8A9DA12B561DCD1A004D3BE37; isg=Aq6u9eVhe-NSpY8FI6_4Q3Hy_wSwB3Kddcv4eNh2IbFsu0wVQD6huT_5BRCt');
	$result = curl_exec($ch);
	//curl_close($ch);
	echo $result;
用这种方式模拟只能把cookie添加到$_SERVER里面,而不能用这些cookies进行请求。。。。。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧