#python #cookies #python-requests #session-cookies
#python #файлы cookie #python-запросы #сессия-cookies
Вопрос:
Привет, я новичок в запросах Python и хотел бы получить некоторую помощь.
Когда я пытаюсь использовать запросы Python и получить файл cookie сеанса, используйте следующую команду:
session_req = requests.session()
result = session_req.get(
get_url
)
после выполнения GET из запросов я использую свойство ‘.cookies’ и соответствующий ключ, который я хочу отправить в заголовке POST, я успешно получаю значение, но действие POST не работает.
session_req.cookies['IFCSHOPSESSID']
но когда я получаю запрос от того же API через POSTMAN и пытаюсь получить свойство cookie (экспортируя код в виде запросов python) Я нашел некоторые различия, и если я использую этот же cookie, экспортированный из POSTMAN, он работает.
ПРИМЕР ПОЧТАЛЬОНА
'cookie': 'IFCSHOPSESSID=hrthhiqdeg0dvf4ecooc83lui3; nikega=GA1.4.831513767.1599354095; nikega_gid=GA1.4.1839484382.1599354095; _ga=GA1.3.831513767.1599354095; _gid=GA1.3.733956911.1599354099; chaordic_browserId=0-fv_3j6NdVlbNFFwPRzUGQVse7e1bbqga-3OS1599354098234702; chaordic_anonymousUserId=anon-0-fv_3j6NdVlbNFFwPRzUGQVse7e1bbqga-3OS1599354098234702; chaordic_testGroup={"experiment":null,"group":null,"testCode":null,"code":null,"session":null}; user_unic_ac_id=bec863cf-4e06-0ab1-d881-b566595d3e8f; _gcl_au=1.1.1305519862.1599354100; _fbp=fb.2.1599354100232.504934336; smeventsclear_16df2784b41e46129645c2417f131191=true; smViewOnSite=true; __pr.cvh=4ftsyf8x16; _gaexp=GAX1.3.tupm6REJTMeD-piAakRDMA.18557.0; blueID=75a502b6-e7c2-4eb3-8442-75aea5d95fdc; _cm_ads_activation_retry=false; sback_client=5816989a58791059954e4c52; sback_partner=false; sb_days=1599356617672; sback_refresh_wp=no; smClickOnSite=true; smClickOnSite_652c0aaee02549a3a6ea89988778d3fc=true; _rtbhouse_source_=socialminer; RKT=false; dedup=socialminer; lmd_cj=socialminer; advcake_url=https://www.nike.com.br/lancamentos?utm_source=socialminer&utm_medium=socialminer_onsitedesktop&utm_campaign=socialminer_onsitedesktop_lancamentos_desk&smid=3-17; advcake_trackid=dd7e2ef0-dd50-889a-aeea-559a0d8bcd22; advcake_utm_content=socialminer_onsitedesktop_lancamentos_desk; advcake_utm_campaign=socialminer; Campanha=; Parceiro=; Midia=; AMCVS_F0935E09512D2C270A490D4D@AdobeOrg=1; s_cc=true; lmd_orig=direct; SIZEBAY_SESSION_ID=0AC1A70CB19F4f03610665d04bb088ef3b9af0942fc8; sback_customer_w=true; sback_browser=0-87718800-1599408894bff13e290b9fee5fc2b430382f639b87dd9cf25112334287575f550afed62983-14051381-17920887216,13017640152-1599408894; sback_access_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJhcGkuc2JhY2sudGVjaCIsImlhdCI6MTU5OTQwODg5NSwiZXhwIjoxNTk5NDk1Mjk1LCJhcGkiOiJ2MiIsImRhdGEiOnsiY2xpZW50X2lkIjoiNTgxNjk4OWE1ODc5MTA1OTk1NGU0YzUyIiwiY2xpZW50X2RvbWFpbiI6Im5pa2UuY29tLmJyIiwiY3VzdG9tZXJfaWQiOiI1ZjU0M2VjODA5ZjFkMDkzMmQzMjQ2OTUiLCJjdXN0b21lcl9hbm9ueW1vdXMiOmZhbHNlLCJjb25uZWN0aW9uX2lkIjoiNWY1NDNlYzgwOWYxZDA5MzJkMzI0Njk2IiwiYWNjZXNzX2xldmVsIjoiY3VzdG9tZXIifX0.K6FYVBasHjMg_PLbT1yZfrnIp97USqijoMObF4eUSms.WrWrDrHeHezRqBiYiYHeDr; sback_customer=$2gSxATWYdVYOVGMI10bUdkW2pWeoZERU1kc1YWWhd1SNR0aMJ0QUVzTHpHdJZERnpVS6FTSkRUTOBjMys2bUdnT2$12; sback_pageview=false; ak_bmsc=B6177778CB59637165F7EC43342C1559C9063147DA220000234E555F8D78F831~plACNrc4cNxoHZNcO7aF4o U0KQNKjzPECGSfb42NdayPvdNkBWwUT9QOhGjuLJJ3vStuFIRkiI/35wsHEyUE3/h2guphhaEy71BnfekvDtb/6F84hS fWhPxxVG5RAlph8WzGpYMn6NZESNVcgnZYfH4HoZ/IzBPR6AMG9UGn6W4xm/j/j9kOfef8v/fZf2pXw4mxJuiN5Cxc7g2sV4nCdoEW98Q4AgqplzxWZjpamZk=; bm_sz=6586256DDAFC895D740341E4214D0D40~YAAQRzEGybYT7yN0AQAAfDw5ZQnXjJtKI2SxkwQFV9vLZpF5mACXNUtUFDSkidKuYM2fac5sQgRozU9fA3 017dht/PUtH wtibATtTmoVOlpKnW V76 1rySk3HK6q83Q9rtQc/LaaQ8VYtK/tDi0VOc7/0wLyKy/ Z4OLtgUpySYZZcEX4k8/46no8rFD6OQ==; AMCV_F0935E09512D2C270A490D4D@AdobeOrg=359503849|MCIDTS|18512|MCMID|56897587165425478193529762442649463163|MCAAMLH-1600030892|4|MCAAMB-1600030892|RKhpRz8krg2tLO6pguXWp5olkAcUniQYPHaMWWgdJ3xzPWQmdj0y|MCOPTOUT-1599433292s|NONE|MCSYNCSOP|411-18519|vVersion|5.0.1; sback_total_sessions=3; sback_session=5f554e3c73a63da56d739d87; lmd_traf=direct-1599402359608amp;direct-1599408890286amp;direct-1599414284313amp;direct-1599427194077; chaordic_realUserId=2962653; chaordic_session=1599429266491-0.4343169041143473; _st_ses=49222273669791505; _st_cart_script=helper_nike.js; _st_cart_url=/; _sptid=1592; _spcid=1592; _st_id=cnVkc29ucmFtb25AZ21haWwuY29t; _st_idb=cnVkc29ucmFtb25AZ21haWwuY29t; lx_sales_channel=["2"]; sback_cart=5f555ba24f507d767721c387; CSRFtoken=1ac8a198f88ac1ccc1f8555ab41c8a95; gpv_v70=nikecombr>checkout>address; pv_templateName=CHECKOUT; gptype_v60=checkout:address; stc119288=env:1599429270|20201007215430|20200906222939|5|1088071:20210906215939|uid:1599354102799.1149977977.6705985.119288.1871143352:20210906215939|srchist:1088071:1599429270:20201007215430:20210906215939|tsa:1599429270805.1898407973.364911.7635034620790062.2:20200906222939; bm_sv=C9C3A8C6B2F6CB232317BB794ADC0497~ZnoksXquh4Yrh4uN87gycXdh ixzU xMFsb94sO9uE5JMLyZz9eJPp5odX7vx944KIXG1nvOxuq8pdrQUDjBrchRJLC4yiD1yWX0h4BjWhZwbfHPtnzaT3ASbIZnf2Ts1TRt ZAescJJwrNPs4oV2If7vyiWi2AYILFvCstCTS8=; _uetsid=a9a0bfd4fe4e4db52bcd4ca66850a785; _uetvid=9ba47ed116a48f496f6b1a9844e21c95; __udf_j=f08aeb668454efbf6ddc83dd9d4b7a8385abde9f9fbd92526f1de0441da2126ec40330dfc36d0b9c3eae98557c94447d; _spl_pv=40; s_sq=lojanike-new-production%2Clojanike-nikebr=%26c.%26a.%26activitymap.%26page%3Dnikecombr%253Echeckout%253Eaddress%26link%3DSeguir%2520para%2520pagamento%26region%3Didentificacao-form%26pageIDType%3D1%26.activitymap%26.a%26.c%26pid%3Dnikecombr%253Echeckout%253Eaddress%26pidt%3D1%26oid%3DSeguir%2520para%2520pagamento%26oidt%3D3%26ot%3DSUBMIT; RT="z=1amp;dm=nike.com.bramp;si=92b42534-25ee-4155-aa1a-e7d127581869amp;ss=kermvxylamp;sl=9amp;tt=17e8amp;bcn=//173e2544.akstat.io/"; _abck=F6E1C280C3F9D735A2B1AB62443DB479~-1~YAAQVjEGycno iJ0AQAAmtRxZQT8kxLFalTup4dkYT5 cq/PavPcY4/0zAeJv4GoSQQwYVj4EWydkfxbJR3Rgaa4k6ma 5O72J/lsiajATrx0oaZJuB5b/FIP6RymanPRVGlb3kLJXpBQDkCmVv62kkxLKxySrlAYDCg0ORCpSXlTCbFBVEchC9ih5t094egSeVdM6VjfQSO9uDKISBoP4923qkJMTpbk9B1nOoiylKK y FGFu8pzEpQqZYj7tIMTJVpqe0OpXaQ8m8nPyp0K PmBcAndIHcBMTZUEqma9/72Enx8yvGbKXrYbAzNDw6ZtKY9OAbNuVeqprza/Af0aUkinm0l3JqxjTH1LpglNxNN4=~-1~-1~-1; CSRFtoken=20a208bad599aa3ead0bbe944b27a368; bm_sv=C9C3A8C6B2F6CB232317BB794ADC0497~ZnoksXquh4Yrh4uN87gycXdh ixzU xMFsb94sO9uE5JMLyZz9eJPp5odX7vx944KIXG1nvOxuq8pdrQUDjBrchRJLC4yiD1yWX0h4BjWhbSXhHWWrgkUsOTt9033P5Wxu1qmo5M6w0VAWeAzBaCN7yZC2Ll7DiGq0CwpjxlOW4=; _abck=F6E1C280C3F9D735A2B1AB62443DB479~-1~YAAQVjEGyRKO iJ0AQAA 4U9ZQSNIWTEz/60Uk5gz2tnzVtbMbX0hpaMbkbeJxSYSMD1xo7TTedXnJ0UuTLxxcHhLVrRRCrZfSjZ yH00Ld6FLIajmYFefKPehzA6GgwjnLyucI1O6nDw2ZU1CV0WJLeWGgcmX7sinsLr3DVtmoGJyNR1Q9EWpvq71/W1Ys4Bqhq1628YKEz/0Z1Ic1bWMujcG03064ZZYYXTSTz9jrkxHKaEoJQNQgyUg9NXQhv4EFoMSESy/AIKRy hVCULLJscbkpH8WakuvYQ1raghVfheks/Xra9AmiUoOqAbWAPXOij1nWQ9PSV2hxQZfkibD0 YP14pTXPoCAUA9jCQHRJIw=~0~-1~-1'
session_req.cookies[‘IFCSHOPSESSID’] ПРИМЕР
qnabtagl4pu7gm2jg3sij03cu6
Другая любопытная вещь заключается в том, что когда я использую свойство ‘.cookies’, мой POST-вызов возвращает успех даже без обновления корзины, в которую он должен вставить новый регистр.
Поскольку я пытаюсь разработать одного бота для сайта, я хотел бы сгенерировать этот же cookie с помощью кода запросов Python. Кто-нибудь может попытаться помочь мне в этом?
Комментарии:
1. Нет необходимости отправлять cookie явно, объект сеанса обработает это. Перед выполнением запроса post выполните запрос get для файлов cookie, которые необходимо установить.
2. но как я мог это выполнить? Поскольку, когда я пытаюсь выполнить без явного указания cookie, я отправляю сообщение на соответствующий URL, оно возвращает мне 200, но не обновляет товар корзины, который я отправил по запросу POST. post = session_req.post(login_url, data = полезная нагрузка) <Ответ [200]>
3. Можете ли вы поделиться своим кодом или URL, который вы пытаетесь, чтобы я мог попробовать его в своей системе?
4. Сначала я использую URL -login_url = » nike.com.br/Produto/Meia-Nike-Everyday-Cushion-Crew-3-pares /… » — get_url = » nike.com.br/Produto/Meia-Nike-Everyday-Cushion-Crew-3-pares /… »
5. во-вторых, я получаю session — session_req = requests.session() # получение токена CSRF login = session_req.get(login_url) login_html = html.fromstring(login.content) authenticity_token = list(set(login_html.xpath(«//ввод [@type=’hidden’]/@value»)))[0] печать(authenticity_token)
Ответ №1:
Это пример с python 3. Вы можете настроить его.
import requests
data ="param_1=value_1amp;param_2=value_2amp;.....amp;param_n=value_n"; #your request parameters.
cookie = "cookie_name=xxxxxxxx;....." #define cookie
url_endpoint = "htpps://........." # your url endpoint
# add cookies to endpoints
resp = requests.get(url_endpoint, data=data.encode('utf-8'),cookies=cookie)
if(resp.status_code==200):
print("success ")
else:
print("error ")
Комментарии:
1. Заранее спасибо за ваш пример, но я знаю, как отправить cookie с помощью requests libray, и я ищу, как добиться этого динамически. Сценарий заключается в том, что я мог бы войти в систему и получить сеанс, но когда я использую запросы с тем же сеансом, публикация данных не работает.