পাইথন রিকোয়েস্টস লাইব্রেরির সাথে পোস্টের অনুরোধে কুকিজ কীভাবে প্রেরণ করবেন?


102

পোস্টের অনুরোধের সাথে কুকিজ প্রেরণের জন্য আমি অনুরোধের গ্রন্থাগারটি ব্যবহার করার চেষ্টা করছি , তবে এটির ডকুমেন্টের ভিত্তিতে কুকিজগুলি কীভাবে সেটআপ করতে হবে তা আমি নিশ্চিত নই। স্ক্রিপ্টটি উইকিপিডিয়ায় ব্যবহারের জন্য, এবং যে কুকিগুলি প্রেরণ করা দরকার তা এই ফর্মের:

enwiki_session=17ab96bd8ffbe8ca58a78657a918558e; path=/; domain=.wikipedia.com; HttpOnly

তবে requestsডকুমেন্টেশন কুইকস্টার্ট এটি একমাত্র উদাহরণ হিসাবে দেয়:

cookies = dict(cookies_are='working')

এই লাইব্রেরিটি ব্যবহার করে আমি কীভাবে উপরের মতো একটি কুকি এনকোড করতে পারি? পাইথনের স্ট্যান্ডার্ড কুকি লাইব্রেরিটি দিয়ে কি আমার তৈরি করা দরকার, তারপরে এটি পোস্টের অনুরোধের সাথে প্রেরণ করব?


4
আপনার কুকিতে বেশ কয়েকটি a=b;জোড়া রয়েছে। অনুমান aহিসাবে, bঅভিধানে কী এবং মান হিসাবে ব্যবহার করুন ।
থমাস কে

উত্তর:


225

অনুরোধগুলির সর্বশেষ প্রকাশটি সহজ অভিধান থেকে আপনার জন্য কুকিজার তৈরি করবে।

import requests

cookies = {'enwiki_session': '17ab96bd8ffbe8ca58a78657a918558'}

r = requests.post('http://wikipedia.org', cookies=cookies)

উপভোগ করুন :)


এই কোডটি কি আমার ব্রাউজারে একটি কুকি রাখার কথা? আমি এটি চেষ্টা করেছিলাম এবং এটি আমার পক্ষে কার্যকর হয়নি।
ক্রিস নীলসেন

18
@ ক্রিসন নিলসন এই প্রশ্ন / উত্তরটির ব্রাউজারগুলির সাথে কোনও সম্পর্ক নেই
থিফমাস্টার

@ থিফমাস্টার: সাধারণত ব্রাউজারে কুকি থাকে। যদি এই উত্তরটির ব্রাউজারগুলির সাথে কোনও সম্পর্ক না থাকে তবে এর সাথে কী করার আছে?
ক্রিস

5
@ ক্রিসনিয়েলস: এই প্রশ্ন এবং উত্তরের কোডটি পাইথনের অনুরোধে একটি কুকি সেট করার বিষয়ে। অনুরোধটি ব্রাউজারের অনুরোধের মতো কিছু করে তবে কোনও ব্রাউজার জড়িত নয়।
ডিডে

122

কেবলমাত্র পূর্ববর্তী উত্তরটি প্রসারিত করার জন্য, আপনি যদি দুটি অনুরোধের সাথে একত্রে লিঙ্ক করছেন এবং প্রথমটি থেকে ফিরে আসা কুকিজগুলি দ্বিতীয়টিতে পাঠাতে চান (উদাহরণস্বরূপ, অনুরোধগুলির মধ্যে জীবিত একটি সেশন রক্ষণাবেক্ষণ করুন) আপনি করতে পারেন:

import requests
r1 = requests.post('http://www.yourapp.com/login')
r2 = requests.post('http://www.yourapp.com/somepage',cookies=r1.cookies)

54
অতিরিক্ত হিসাবে, আপনি requests.sessionএই সঠিক জিনিসটির জন্য একাধিক অধিবেশন জুড়ে কুকিজ সংরক্ষণ করতে পারেন , sessionপরিবর্তে প্রত্যাবর্তিত বস্তু থেকে কল করতে পারেন ।
ট্যাঙ্কোরস্যামশ

7
মাঝে মাঝে সেশন ব্যবহার করার সময়ও আমাকে এটি ব্যবহার করতে হয়েছিল। সেশনগুলি কিছু পরিস্থিতিতে সেট-কুকির শিরোনাম মিস করে বলে মনে হচ্ছে।
কোর্ভিন

4
@ কারভিন এটি ঠিক আমার সাথে ঘটেছিল। অনুরোধে বাগের মতো মনে হয়, কারণ সেশনে এটি পরিচালনা করা উচিত
deweydb

4
@ ট্যানকোরস্যামশ অবশ্যই সেখানে একটি বাগ আছে, আমার কুকিগুলি ব্যবহার করে এগিয়ে নেওয়া হয় নাrequest.session
টজোররিমুরি

কোন সেশনে এটি (মিস) কুকি সেট করার সর্বোত্তম উপায়? stackoverflow.com/a/17240616/143397
davidA

0

আপনি যদি কুকিটি ব্রাউজারে পাস করতে চান তবে আপনাকে ফেরত পাঠানোর জন্য আপনাকে শিরোনামগুলিতে সংযোজন করতে হবে। আপনি যদি ডাব্লুএসজি ব্যবহার করেন:

import requests
...


def application(environ, start_response):
    cookie = {'enwiki_session': '17ab96bd8ffbe8ca58a78657a918558'}
    response_headers = [('Content-type', 'text/plain')]
    response_headers.append(('Set-Cookie',cookie))
...

    return [bytes(post_env),response_headers]

আমি সফলভাবে বুগজিলা এবং টুুইকির সাথে একই ডোমেনে হোস্ট করা প্রমাণ দিয়েছি যে আমার পাইথন ডাব্লুএসজি স্ক্রিপ্টটি অজগর ব্যবহারকারী / পাসওয়ার্ডটি আমার অজগর স্ক্রিপ্টে প্রেরণ করে এবং কুকিজগুলি ব্রাউজারে দিয়ে যাচ্ছে। এটি আমাকে একই ব্রাউজারে বাগজিলা এবং টুুইকি পৃষ্ঠাগুলি খুলতে এবং অনুমোদন করতে সহায়তা করে। আমি স্যুটসিআরএম-তেও এটি করার চেষ্টা করছি তবে স্যুটসিআরএম সাগর সাঁতার কুকিজ পাইথন স্ক্রিপ্ট থেকে সফলভাবে প্রমাণীকরণের পরেও গ্রহণ করতে আমার সমস্যা হচ্ছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.