【问题标题】:How do i change my location sending a request in python如何更改我在 python 中发送请求的位置
【发布时间】:2017-04-27 19:59:44
【问题描述】:

我需要发送一个请求以从该网页获取所有游轮信息: https://www.ncl.com 问题是我在欧洲,我需要以美元为单位的价格。不知何故,页面“知道”我在哪里,我无法让它返回除欧元以外的货币。有没有办法以编程方式做到这一点? 到目前为止,我的要求是这样的:

session = requests.session()
headers = {
    "authority": "www.ncl.com",
    "method": "GET",
    "path": "/ca/en/search_vacations",
    "scheme": "https",
    "accept": "application/json, text/plain, */*",
    "connection": "keep-alive",
    "referer": "https://www.ncl.com/ca/en/",
    "cookie":"AkaUTrackingID=5D33489F106C004C18DFF0A6C79B44FD; AkaSTrackingID=F942E1903C8B5868628CF829225B6C0F; UrCapture=1d20f804-718a-e8ee-b1d8-d4f01150843f; BIGipServerpreprod2_www2.ncl.com_http=61515968.20480.0000; _gat_tealium_0=1; BIGipServerpreprod2_www.ncl.com_r4=1957341376.10275.0000; MP_COUNTRY=us; MP_LANG=en; mp__utma=35125182.281213660.1481488771.1481488771.1481488771.1; mp__utmc=35125182; mp__utmz=35125182.1481488771.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); utag_main=_st:1481490575797$ses_id:1481489633989%3Bexp-session; s_pers=%20s_fid%3D37513E254394AD66-1292924EC7FC34CB%7C1544560775848%3B%20s_nr%3D1481488775855-New%7C1484080775855%3B; s_sess=%20s_cc%3Dtrue%3B%20c%3DundefinedDirect%2520LoadDirect%2520Load%3B%20s_sq%3D%3B; _ga=GA1.2.969979116.1481488770; mp__utmb=35125182; NCL_LOCALE=en-US; SESS93afff5e686ba2a15ce72484c3a65b42=5ecffd6d110c231744267ee50e4eeb79; ak_location=US,NY,NEWYORK,501; Ncl_region=NY; optimizelyEndUserId=oeu1481488768465r0.23231006365903206",
    "Proxy-Authorization": "Basic QFRLLTVmZjIwN2YzLTlmOGUtNDk0MS05MjY2LTkxMjdiMTZlZTI5ZDpAVEstNWZmMjA3ZjMtOWY4ZS00OTQxLTkyNjYtOTEyN2IxNmVlMjlk"
}
session.headers.update(headers)
url = "https://www.ncl.com/ca/en/search_vacations?cruise=1&cruiseTour=1&cruiseHotel=1&cruiseHotelAir=1&flyCruise=1&numberOfGuests=4294953449&state=undefined&pageSize=10&currentPage=" + str(page_counter) + "&sortBy=Featured&autoPopulate=f&from=resultPage"
    page = session.get(url)
    cruise_results = page.json()

我真的需要在不使用 VPN 隧道或代理的情况下这样做。 我使用的 cookie 不是我尝试过的第一个。上面的这个,是我通过隧道连接并从美国打开页面时得到的。没有做这项工作,所以我猜饼干没有涉及。在这方面我还是很陌生。

【问题讨论】:

    标签: python python-3.x python-requests python-3.5


    【解决方案1】:

    不知何故,页面“知道”我在哪里,我无法让它返回除欧元以外的货币。

    你必须调试/实验——这是你不知道的服务器逻辑/代码。

    他们很可能通过您的 IP 地址检测到您的位置,然后您需要使用代理服务器。

    也可能是,您使用的 cookie 包含一些定义您的用户设置的信息(例如,我在其中找到了 MP_COUNTRY=us;)。

    有些网站使用特殊的 GET 参数(例如 country=USregion 或其他),它会覆盖从您的 IP 推断出的国家/地区 - 寻找它,也许你有运气。

    【讨论】:

    • 好吧,正如我所说,这是一个 cookie,通过 VPN 隧道的访问正确生成。如果是 cookie,我需要工作。
    • 那么,当您第一次通过美国隧道提出请求时,价格是美元?
    • 是的。当程序从欧洲运行时,问题是在代码中复制这个
    • 恐怕你别无选择——你必须使用隧道或代理服务器。 IP 数据报包含发送者的 IP 地址——你不能篡改它。
    【解决方案2】:

    很有可能通过您的 IP 地址确定您的位置。我不相信有办法以编程方式更改它,因为它是由您的 ISP 提供的。您需要设置 VPN 或代理来执行此操作。为什么你说你需要在没有 VPN 的情况下这样做?如果担心的话,它们真的很容易设置。

    【讨论】:

    • 程序将从不同的位置运行,并希望所有这些设置都在代码中完成。有没有办法通过代理只发送请求?也许在代码中设置?
    • 我不这么认为。
    猜你喜欢
    • 2021-07-09
    • 1970-01-01
    • 2021-06-05
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 2011-01-15
    相关资源
    最近更新 更多