কোনও ওয়েবপৃষ্ঠায় লগইন করতে এবং পরবর্তী ব্যবহারের জন্য কুকিজ পুনরুদ্ধারে পাইথন কীভাবে ব্যবহার করবেন?


146

আমি পাইথন ব্যবহার করে ওয়েবপৃষ্ঠাটি ডাউনলোড এবং বিশ্লেষণ করতে চাই তবে এটি অ্যাক্সেস করতে আমার কয়েকটি কুকিজ সেট প্রয়োজন need তাই আমাকে প্রথমে ওয়েবপৃষ্ঠায় https এর মাধ্যমে লগইন করতে হবে। লগইন মুহুর্তে / লগিন.এফপিতে দুটি পোষ্ট প্যারাম (ব্যবহারকারীর নাম, পাসওয়ার্ড) প্রেরণ জড়িত। লগইন অনুরোধ চলাকালীন আমি প্রতিক্রিয়া শিরোনাম থেকে কুকিজগুলি পুনরুদ্ধার করতে এবং সেগুলি সঞ্চয় করতে চাই যাতে আমি ওয়েবপৃষ্ঠা / ডেটা.এফপি ডাউনলোড করার অনুরোধে তাদের ব্যবহার করতে পারি।

আমি কীভাবে অজগরটি এটি করতে পারি (পছন্দসই ২.6)? সম্ভব হলে আমি কেবল বিল্টিন মডিউলই ব্যবহার করতে চাই।

উত্তর:


147
import urllib, urllib2, cookielib

username = 'myuser'
password = 'mypassword'

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
login_data = urllib.urlencode({'username' : username, 'j_password' : password})
opener.open('http://www.example.com/login.php', login_data)
resp = opener.open('http://www.example.com/hiddenpage.php')
print resp.read()

resp.read()আপনি যে পৃষ্ঠার খুলতে চান তার সোজা এইচটিএমএল এবং আপনি openerনিজের সেশন কুকি ব্যবহার করে যে কোনও পৃষ্ঠা দেখতে ব্যবহার করতে পারেন ।


1
এটি কি নিরাপদ? এটি প্যাকেট স্নিফারগুলিকে প্লেইন টেক্সট পাসওয়ার্ডগুলি দেখার অনুমতি দেবে না? এইচটিপিএস ব্যবহার করা কি আরও সুরক্ষিত হবে?
হার্টিনপিস

2
@ হার্টিনপিস হ্যাঁ, সার্ভার যদি এটি সরবরাহ করে তবে আপনার এইচটিটিপিএস ব্যবহার করা উচিত।
হারলে হলকম্ব

আপনাকে ধন্যবাদ ... তবে কল্পনা করুন যে আমরা লগ ইন করেছি এবং এইচটি পোস্ট করতে চাই ... পোস্ট ডেটার জন্য কীভাবে এই থ্রেডে কুকি সেট করবেন?
এমএলএসসি

আপনি যদি বড় কোড লিখছেন তবে অনুরোধের লাইব্রেরিটি ব্যবহার করার জন্য উচ্চতর পরামর্শ দিন। (ব্যক্তিগত অভিজ্ঞতা)
স্বপ্নিল জারিওয়ালা

157

চমৎকার অনুরোধ লাইব্রেরি ব্যবহার করে এখানে একটি সংস্করণ দেওয়া হয়েছে :

from requests import session

payload = {
    'action': 'login',
    'username': USERNAME,
    'password': PASSWORD
}

with session() as c:
    c.post('http://example.com/login.php', data=payload)
    response = c.get('http://example.com/protected_page.php')
    print(response.headers)
    print(response.text)

3
কি 'action': 'login'এই উদাহরণে আসলে প্রয়োজন হয় তাহলে, অথবা এটা শুধু একটি অতিরিক্ত প্যারামিটার যে অনুরোধের সাথে পাঠানো হয়?
টেড

1
@ অংশটি সম্পূর্ণরূপে প্রয়োজন।
সংঘুন লি লি

@ টেড সম্ভবত এটি বিশেষ উদাহরণে প্রয়োজন। আমার প্রোগ্রামে এটির দরকার ছিল না।
হাইস্টেকার

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