首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在browser_cookie3或任何帮助获取cookie的类似库中使用代理?

如何在browser_cookie3或任何帮助获取cookie的类似库中使用代理?
EN

Stack Overflow用户
提问于 2022-06-19 17:59:06
回答 2查看 343关注 0票数 0

我正在尝试使用这个库cookie3从域填充cookie。情况似乎很好。然而,的唯一主要问题是,我无法找到在这个库中提供代理以从代理来自.的位置获取cookie的任何方法。

例如,如果我在该库中使用此域www.nordstrom.com并执行以下脚本:

代码语言:javascript
运行
复制
import browser_cookie3

cj = browser_cookie3.chrome(domain_name='www.nordstrom.com')

for item in cj:
    if not 'internationalshippref' in item.name:
        continue
    cookie = f'{item.name}={item.value}'
    break

print(cookie)

我总是得到以下结果,因为我目前的位置是孟加拉国:

代码语言:javascript
运行
复制
internationalshippref=preferredcountry=BD&preferredcurrency=BDT&preferredcountryname=Bangladesh

如何使用browser_cookie3或任何其他库中的代理从上面的站点获取cookie?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-24 14:30:56

该网站有一些基本的安全,不刮刮。但是,使用剧作家,我能够访问他们的网站,获得饼干,没有太多的麻烦。按照这个不言自明的小示例,在启用代理的情况下启动浏览器并获取cookie:

代码语言:javascript
运行
复制
from playwright.sync_api import sync_playwright


def get_proxy(server, user=None, password=None):
    if user and password:
        return {'server': server, 'username': user, 'password': password}
    else:
        return {'server': server}


def get_cookies(user_agent, proxy=None):
    with sync_playwright() as p:
        browser = p.firefox.launch(headless=True, proxy=proxy)
        context = browser.new_context(no_viewport=True, user_agent=user_agent)
        page = context.new_page()
        page.goto("https://www.nordstrom.com")
        with page.expect_navigation(url="https://www.nordstrom.com/", wait_until='load'):
            pass
        cookies = context.cookies()
        browser.close()
    return cookies


proxy = get_proxy(server='http://my.server.com:8282', user='optional', password='optional')
print(get_cookies('my useragent', proxy))

输出

代码语言:javascript
运行
复制
[{'name': 'rfx-forex-rate', 'value': 'currencyCode=USD&exchangeRate=1&quoteId=0', 'domain': 'www.nordstrom.com', 'path': '/', 'expires': 1656083650, 'httpOnly': False, 'secure': True, 'sameSite': 'None'}, {'name': 'internationalshippref', 'value': 'preferredcountry=US&preferredcurrency=USD&preferredcountryname=United%20States', 'domain': 'www.nordstrom.com', 'path': '/', 'expires': 1971440050, 'httpOnly': False, 'secure': True, 'sameSite': 'None'}, {'name': 'no-track', 'value': 'ccpa=false', 'domain': 'www.nordstrom.com', 'path': '/', 'expires': 1971440050, 'httpOnly': False, 'secure': True, 'sameSite': 'None'}, {'name': 'nordstrom', 'value': 'bagcount=0&firstname=&ispinned=False&isSocial=False&shopperattr=||0|False|-1&shopperid=c38c25da4c2542fd873e7a88d0ba163f&USERNAME=', 'domain': 'www.nordstrom.com', 'path': '/', 'expires': 1971440050, 'httpOnly': False, 'secure': True, 'sameSite': 'None'}, {'name': 'nui', 'value': 'firstVisit=2022-06-24T14%3A14%3A10.457Z&geoLocation=&isModified=false&lme=false', 'domain': 'www.nordstrom.com', 'path': '/', 'expires': 1971440050, 'httpOnly': False, 'secure': True, 'sameSite': 'None'}, {'name': 'session', 'value': 'FILTERSTATE=&RESULTBACK=&RETURNURL=http%3A%2F%2Fshop.nordstrom.com&SEARCHRETURNURL=http%3A%2F%2Fshop.nordstrom.com&FLSEmployeeNumber=&FLSRegisterNumber=&FLSStoreNumber=&FLSPOSType=&gctoken=&CookieDomain=&IsStoreModeActive=0', 'domain': 'www.nordstrom.com', 'path': '/', 'expires': -1, 'httpOnly': False, 'secure': True, 'sameSite': 'None'}, {'name': 'shoppertoken', 'value': 'shopperToken=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjMzhjMjVkYTRjMjU0MmZkODczZTdhODhkMGJhMTYzZiIsImF1ZCI6Imd1ZXN0IiwiaXNzIjoibm9yZHN0cm9tLWd1ZXN0LWF1dGgiLCJleHAiOjE5NzE2OTkyNTAsInJlZnJlc2giOjE2NTYwOTQ0NTAsImp0aSI6IjA2YmE5M2I3LTA3ZjMtNDRkMi1iYjc4LTQwYzBjYWFiZWI4MSIsImlhdCI6MTY1NjA4MDA1MH0.jyAHIejISNgu_cGmZh7k9R7iiB7HEwwDLc9g5ek79fz71yQn34kuwERAG4lZf3laZPUXJgakl3L-DScPLJ4FJ9j_kNUxjuw2Eg4rk7hIPvZ35kIqwtwbkrO8XjyhjgxTeXyAV5HCZa8QFO263REuI0gA1y9-MFA2fyGME3uWQruwB_q_6hfeR-Nyq8epBOuBRRqttLY6sV0sXACzRyPciqR3ykochm90DwG3H2PU4cYts6OO0wFqrnM_LhcMzD2AmiK7XegdwwKBlwzJcRqoiXu_OZFoMHPI2_eW3FFfED8A93jPyGYKmFm_Hm4RpItibGG27TJJRY0HmaO_BvqxKA', 'domain': 'www.nordstrom.com', 'path': '/', 'expires': 1971397793, 'httpOnly': False, 'secure': True, 'sameSite': 'None'}, {'name': 'usersession', 'value': 'CookieDomain=nordstrom.com&SessionId=1029b2c9-bbc5-45db-8454-202c6271ad8f', 'domain': 'www.nordstrom.com', 'path': '/', 'expires': -1, 'httpOnly': False, 'secure': True, 'sameSite': 'None'}, {'name': 'experiments', 'value': 'ExperimentId=789ff94f-d13c-4ebb-9303-433a542f3ae8', 'domain': '.nordstrom.com', 'path': '/', 'expires': 1971699250, 'httpOnly': False, 'secure': True, 'sameSite': 'None'}, {'name': 'Ad34bsY56', 'value': 'AxkjEJaBAQAAfjgIHurZtpHYD2QEPO5pusibS79jQ7brx8HiJfld2cp5Ie3MAUjwyyWcuJMswH8AAEB3AAAAAA|1|1|8421240d3766a87fc796cc577ffbc7cd05a87826', 'domain': '.nordstrom.com', 'path': '/', 'expires': 3233927649, 'httpOnly': False, 'secure': True, 'sameSite': 'None'}, {'name': 'Bd34bsY56', 'value': 'A6AoEJaBAQAANCRRvsL-3aoOFIk1xtv3Y6fYMRV0SY7IjL4nIEPc1ebkqh6SAUjwyyWcuJMswH8AAEB3AAAAAA==', 'domain': 'www.nordstrom.com', 'path': '/', 'expires': 1687637001, 'httpOnly': False, 'secure': True, 'sameSite': 'None'}]

请记住,重复调用get_cookies是非常低效率的,因为它每次都会产生资源密集型的浏览器。如果您确实需要反复获得cookie,我建议使用类似于多处理的方法生成另一个进程,使浏览器在其中保持活力,并通过队列同时提供任何获取cookie的请求。

Note

关于这一行:

代码语言:javascript
运行
复制
with page.expect_navigation(url="https://www.nordstrom.com/", wait_until='load'):
    pass

这是因为该网站使用自动重定向通过javascript,如果您访问它,而没有设置适当的标题和cookie。因此,一旦我们第一次进入网站,我们就等待一些重定向的发生。一旦有了,我们就会得到我们想要的饼干。

Update:如下所示,我更新了上面的代码,以传递一个额外的用户代理参数。

票数 4
EN

Stack Overflow用户

发布于 2022-06-19 18:20:17

Browser Cookie库使用浏览器生成的SQLite数据库来创建cookie jar。您不能通过Python代码显式指定代理,因为它本身不运行浏览器。

一种解决方案是配置一个浏览器范围的代理,然后执行您的脚本。

您可以使用Firefox配置浏览器范围的代理,在某些操作系统中,Chrome中没有此选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72679183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档