亚马逊:是不是可以在亚马逊搜索结果的 URL 中指定邮政编码?
Posted
技术标签:
【中文标题】亚马逊:是不是可以在亚马逊搜索结果的 URL 中指定邮政编码?【英文标题】:Amazon: is it possible to specify zip code in the URL for Amazon search results?亚马逊:是否可以在亚马逊搜索结果的 URL 中指定邮政编码? 【发布时间】:2019-06-06 11:06:48 【问题描述】:我注意到一个问题。如果我复制带有搜索结果的亚马逊 URL,并且使用另一个 IP 的人打开它,那么结果可能会有所不同。 例如: https://www.amazon.com/s/ref=sr_nr_p_36_0?lo=toys-and-games&rh=n%3A165793011%2Cp_72%3A1248964011&sort=price-desc-rank&low-price=34.99&high-price=34.99
如果您从 Dallas IP 打开此 URL,您将获得 102 页的结果。
如果您使用 Honolulu IP 打开它,您将获得 101 页。
如果你从俄罗斯 IP 打开它,你会得到 93 页。
是否可以在 url 中直接指定美国邮政编码以便为每个 IP 地址显示相同的结果?
我注意到的另一个小问题 - 它为不同的人显示不同的页面布局。有时它是默认的蓝色链接,有时它有银色按钮。也许有人知道如何使用 url 参数将设计锁定到一种布局? :)
【问题讨论】:
也许可以尝试使用代理来锁定 IP(及其位置) @molamk,这就是我实际在做的事情 :) 我通过不同的代理抓取它,但想锁定交货位置。其实我已经找到了解决办法。 @Stalinko 你好!你能在这里分享你的解决方案吗? @Stalinko 请分享您的解决方案。我需要它。 旧解决方案不起作用。 【参考方案1】:没有简单的解决方案,所以这是我的复杂方法。
这个想法是:您必须发送与您在浏览器中手动更改 ZIP 时发送的相同请求。然后您的邮政编码将被记住。
这是我在 php 中使用 GuzzleHttp 客户端的解决方案:
$jar = new \GuzzleHttp\Cookie\CookieJar();
$client = new \GuzzleHttp\Client([
'headers' => [
'accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'accept-language' => 'en;q=0.8',
'user-agent' => '', //set some User-Agent or just leave it empty cos it works too
'x-requested-with' => 'XMLHttpRequest'
],
'cookies' => $jar,
]);
try
$client->post('https://www.amazon.com/gp/delivery/ajax/address-change.html', [
'form_params' => [
'locationType' => 'LOCATION_INPUT',
'zipCode' => '11219', //YOUR ZIP HERE
'storeContext' => 'office-products',
'deviceType' => 'web',
'pageType' => 'Detail',
'actionSource' => 'glow',
]
]);
catch (RequestException $e)
echo "Failed to set ZIP";
$response = $client->get('...'); //get any other page from Amazon, now it will have proper ZIP
我正在使用很棒的 Guzzle 功能 - cookies
容器:http://docs.guzzlephp.org/en/stable/request-options.html#cookies
它可以像浏览器一样记住和处理请求之间的 cookie。
在所有进一步的请求中,您应该继续使用这些 cookie,它会为您返回 ZIP 的结果。
当然您可以手动处理 cookie,Guzzle 不是必需的,但可以让事情变得更简单。
【讨论】:
以上是关于亚马逊:是不是可以在亚马逊搜索结果的 URL 中指定邮政编码?的主要内容,如果未能解决你的问题,请参考以下文章