将带有curl的cookie传递到谷歌搜索


passing cookies with curl to google search

正如您所知,谷歌显示不同城市的不同搜索结果。例如,与纽约相比,搜索位置设置为华盛顿的特定关键字会得到不同的结果。所以,假设我想要一个脚本,它将把带有位置的cookie文件传递给谷歌,以便轻松地检查不同区域中关键字的位置。

当我将我的位置设置为波兰城市"szczecin"时,谷歌将这两个cookie发送到我的计算机(它们以json形式从Edit this cookie chrome扩展导出):

[{
"domain": ".google.pl",
"expirationDate": 1391874587.99004,
"hostOnly": false,
"httpOnly": true,
"name": "NID",
"path": "/",
"secure": false,
"session": false,
"storeId": "0",
"value": "67=PnzEVGrTahfTXSlj5SMggJqdu7Vw8Q9D4PlVkYQE6gIZdA8BV3S1je-Ub5m-wEYuiJ1AvX_WAdZbxTErDUqhI1Nsil7VjcMxyizZbcI4Vhu7afewuOKnBMcCpnn2v4sH"}],
{
"domain": ".google.pl",
"expirationDate": 1439143350.316524,
"hostOnly": false,
"httpOnly": false,
"name": "PREF",
"path": "/",
"secure": false,
"session": false,
"storeId": "0",
"value": "ID=9defb5b796bd355d:U=642baf734973f22a:FF=0:TM=1376060070:LM=1376071350:L=1c3pjemVjaW4:S=8S3gsGjYc6Tm_1S-"

}]

例如,当我想将我的位置更改为另一个波兰城市"卡托维兹"时,关键的区别是现在PREF cookie中的L=0Z1J2H5YI,而不是L=1c3pjemVjaW4。当我的位置设置为什切青,并且我在编辑此cookie扩展中用L=0Z1J2H5YI替换L=1c3pjemVjaW4时,位置再次为卡托维兹。利用这些知识,我想用旋度设置位置。我是这样做的:

$cookie = "domain=.google.pl; hostOnly=FALSE; httpOnly=FALSE; expirationDate=1439135045;    name=PREF; value=ID=9defb5b796bd355d:U=57ea2c0f55adb400:FF=0:TM=1376060070:LM=1376062249:L=0Z1J2H5YI:S=iaCmsUGcGZUHeQvh;";
$ch = curl_init( $wyniki_url );
        curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:7.0.1) Gecko/20100101 Firefox/7.0.1');
        curl_setopt($ch, CURLOPT_HEADER, 1);
        curl_setopt($ch, CURLOPT_COOKIESESSION, 1);
        curl_setopt($ch, CURLOPT_COOKIE, $cookie);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 5);
        curl_close( $ch );

但这似乎对搜索结果没有影响——它们仍然是由ip位置定义的,而不是这个cookie。有人认为我做错了什么,因为通过curl发送这个饼干可能会失败吗?谢谢你的帮助。

快速查看cookie后,我相信S=部分是一个阻止您自己设置cookie的签名。因此,谷歌服务器可以判断cookie是否已更改,因此您不会得到结果。