0

如您所知,谷歌针对不同的城市显示不同的搜索结果。例如,搜索位置设置为华盛顿的特定关键字会给您带来与纽约等不同的结果。因此,假设我想要一个脚本,它将带有位置的 cookie 文件传递​​给 google,以轻松检查不同区域中关键字的位置。

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

[{
"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。当我的位置设置为 Szczecin 并在编辑此 cookie 扩展程序时将 L=1c3pjemVjaW4 替换为 L=0Z1J2H5YI 时,位置又是卡托维兹。使用这些知识,我想用 curl 设置位置。我是这样做的:

$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 失败?谢谢你的帮助。

4

1 回答 1

0

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

于 2013-11-05T19:43:51.867 回答