পাইথনের সাথে কীভাবে কোনও ওয়েবসাইটে লগইন করতে পারি?


88

আমি এটা কিভাবে করবো? আমি কিছু নির্দিষ্ট লিঙ্ক প্রবেশ করার চেষ্টা করছিলাম (urllib সহ), তবে এটি করার জন্য, আমাকে লগ ইন করতে হবে।

সাইট থেকে আমার এই উত্সটি রয়েছে:

<form id="login-form" action="auth/login" method="post">
    <div>
    <!--label for="rememberme">Remember me</label><input type="checkbox" class="remember" checked="checked" name="remember me" /-->
    <label for="email" id="email-label" class="no-js">Email</label>
    <input id="email-email" type="text" name="handle" value="" autocomplete="off" />
    <label for="combination" id="combo-label" class="no-js">Combination</label>
    <input id="password-clear" type="text" value="Combination" autocomplete="off" />
    <input id="password-password" type="password" name="password" value="" autocomplete="off" />
    <input id="sumbitLogin" class="signin" type="submit" value="Sign In" />

এটা কি সম্ভব?

উত্তর:


70

সম্ভবত আপনি টোয়েল ব্যবহার করতে চান । এটি ব্যবহার করা বেশ সহজ এবং আপনি যা চান তা করতে সক্ষম হওয়া উচিত।

এটি নীচের মত দেখতে হবে:

from twill.commands import *
go('http://example.org')

fv("1", "email-email", "blabla.com")
fv("1", "password-clear", "testpass")

submit('0')

আপনি লগইন করতে চান এমন সাইটটিতে ব্রাউজ করার সময় showforms()আপনি সমস্ত ফর্মগুলির তালিকা করতে ব্যবহার go…করতে পারেন। অজগর দোভাষী থেকে এটি চেষ্টা করুন।


মনে রাখবেন যে কিছু ক্ষেত্রে আপনার জমা () ব্যবহার করতে হবে। দেখুন: list.idyll.org/pipermail/twill/2006- আগস্ট / 000526.html আমি এই সমস্যাটি নিশ্চিত করি, আমার জন্য, www.pge.com- এ লগ ইন করে সাবমিট () কাজগুলি ব্যবহার করে।
ব্যবহারকারী 39131339

4
পাইথন 3.6 এর কোনও সমাধান আছে? দেখে মনে হচ্ছে টুইল পাইথন 3.5 বা 3.6 সমর্থন করে না। আমি এটি ডাউনলোড করে ব্যবহার করে রূপান্তর করার চেষ্টা করেছি 2to3তবে এখন ModuleNotFoundErrorএটি আমদানির চেষ্টা করার সময় আমি একটি পেয়েছি ।
সিজিএফএক্স

বাস্তবিক, আমি সমাধান করতে পারে ModuleNotFoundErrorব্যবহার / টুইল 1.8.0 রূপান্তর ও ইনস্টল করে lxmlএবং requestsসঙ্গে pip install। তবে এখন আমি পেয়েছি SyntaxErrorযখন আমি আমদানি করার চেষ্টা করি কারণ কোথাও False = 0....
সিজিএফএক্স

4
: এটা ব্যাথা এটা ঠিক করার ধরনের, কিন্তু এটি কাজ করে stackoverflow.com/a/45459994/2745116
CGFoX

এটি কি এইচটিটিপি সাইটগুলির সাথে কাজ করে বা আমাকে এই জাতীয় কিছু করতে হবে ?
মাহেশা 999

53

আমাকে এটিকে সহজ করার চেষ্টা করুন, ধরুন সাইটের URL টি হল www.example.com এবং আপনার ব্যবহারকারীর নাম এবং পাসওয়ার্ড পূরণ করে আপনাকে সাইন আপ করতে হবে, তাই আমরা লগইন পৃষ্ঠায় যাচ্ছি http://www.example.com/login এখনই পিএফপি করুন এবং এর উত্স কোডটি দেখুন এবং ক্রিয়াকলাপের URL অনুসন্ধান করুন এটি ফর্ম ট্যাগের মতো হবে

 <form name="loginform" method="post" action="userinfo.php">

এখন নিখুঁত ইউআরএল তৈরির জন্য userinfo.php নিন যা ' http://example.com/userinfo.php ' হবে, এখন একটি সাধারণ অজগর স্ক্রিপ্ট চালান

import requests
url = 'http://example.com/userinfo.php'
values = {'username': 'user',
          'password': 'pass'}

r = requests.post(url, data=values)
print r.content

আমি আশা করি এটি কোনও একদিন কাউকে সহায়তা করে।


আমি চেষ্টা করেছি এমন বেশিরভাগ ওয়েবসাইটের জন্য এটি কাজ করে না
অনুরাগ পান্ডে

দুই ডজন সহায়তা / স্ট্যাকওভারফ্লো পৃষ্ঠাগুলির মধ্যে আমি এটি দেখলাম এটি কেবলমাত্র আমার প্রয়োজনীয় সাইটগুলিতে কাজ করেছিল solution
বুয়

ওয়েব অটোমেশনের জন্য সেরা পছন্দটি ওয়েববট b stackoverflow.com/a/51170181/6665568
নাটেশ ভাট

সব মান কি সর্বদা ব্যবহারকারীর নাম এবং পাসওয়ার্ড? আমার মনে হয় না যে এটি আমার নির্বাচিত সাইটের জন্য কাজ করছে।
ডিলান লোগান

@ ডায়ালানলোগান আপনাকে সর্বদা সত্যিকারের ওয়েবপৃষ্ঠাটি সার্ভারে কী প্রেরণ করে তা পরীক্ষা করে দেখতে হবে এবং এতে আপনার স্ক্রিপ্টটি মানিয়ে নিতে হবে। সার্ভারটি আপনার স্ক্রিপ্ট এবং ওয়েব ব্রাউজারের মধ্যে পার্থক্য করতে সক্ষম হবে না।
জাইকোমোন

28

সাধারণত কোনও সাইটে লগইন করতে আপনার কুকিজের প্রয়োজন, যার অর্থ কুকিলিব, urllib এবং urllib2। আমি ফেসবুক ওয়েব গেমস খেলতে গিয়ে এই ক্লাসটি আবার লিখেছিলাম:

import cookielib
import urllib
import urllib2

# set these to whatever your fb account is
fb_username = "your@facebook.login"
fb_password = "secretpassword"

class WebGamePlayer(object):

    def __init__(self, login, password):
        """ Start up... """
        self.login = login
        self.password = password

        self.cj = cookielib.CookieJar()
        self.opener = urllib2.build_opener(
            urllib2.HTTPRedirectHandler(),
            urllib2.HTTPHandler(debuglevel=0),
            urllib2.HTTPSHandler(debuglevel=0),
            urllib2.HTTPCookieProcessor(self.cj)
        )
        self.opener.addheaders = [
            ('User-agent', ('Mozilla/4.0 (compatible; MSIE 6.0; '
                           'Windows NT 5.2; .NET CLR 1.1.4322)'))
        ]

        # need this twice - once to set cookies, once to log in...
        self.loginToFacebook()
        self.loginToFacebook()

    def loginToFacebook(self):
        """
        Handle login. This should populate our cookie jar.
        """
        login_data = urllib.urlencode({
            'email' : self.login,
            'pass' : self.password,
        })
        response = self.opener.open("https://login.facebook.com/login.php", login_data)
        return ''.join(response.readlines())

অগত্যা আপনার এইচটিটিপিএস বা পুনর্নির্দেশ হ্যান্ডলারগুলির প্রয়োজন হবে না তবে তাদের কোনও ক্ষতি হয় না এবং এটি ওপেনারকে আরও দৃust় করে তোলে। আপনার কুকিগুলির দরকারও পড়তে পারে না তবে আপনি যে ফর্মটি পোস্ট করেছেন কেবল তা থেকে জানা শক্ত। আমি সন্দেহ করি যে আপনি সম্ভবত 'আমাকে মনে রাখুন' ইনপুট থেকে মন্তব্য করেছেন might


19
import cookielib
import urllib
import urllib2

url = 'http://www.someserver.com/auth/login'
values = {'email-email' : 'john@example.com',
          'password-clear' : 'Combination',
          'password-password' : 'mypassword' }

data = urllib.urlencode(values)
cookies = cookielib.CookieJar()

opener = urllib2.build_opener(
    urllib2.HTTPRedirectHandler(),
    urllib2.HTTPHandler(debuglevel=0),
    urllib2.HTTPSHandler(debuglevel=0),
    urllib2.HTTPCookieProcessor(cookies))

response = opener.open(url, data)
the_page = response.read()
http_headers = response.info()
# The login cookies should be contained in the cookies variable

আরও তথ্যের জন্য এখানে যান: https://docs.python.org/2/library/urllib2.html


লিঙ্কটি কাজ করছে না: ইউআরএলগুলিতে একটি যুক্ত করা 2হয়েছিল docs.python.org: ডকস.পাইথন.আর
মাইকেল কোপ

18

ওয়েব পেজ অটোমেশন? অবশ্যই "ওয়েববট"

webbot এমনকি ওয়েব পৃষ্ঠাগুলিও কাজ করে যা গতিশীলভাবে আইডি এবং শ্রেণীর নামগুলি পরিবর্তন করে এবং সেলেনিয়াম বা যান্ত্রিকীকরণের চেয়ে আরও বেশি পদ্ধতি এবং বৈশিষ্ট্য রয়েছে।

এখানে একটি স্নিপেট :)

from webbot import Browser 
web = Browser()
web.go_to('google.com') 
web.click('Sign in')
web.type('mymail@gmail.com' , into='Email')
web.click('NEXT' , tag='span')
web.type('mypassword' , into='Password' , id='passwordFieldId') # specific selection
web.click('NEXT' , tag='span') # you are logged in ^_^

দস্তাবেজগুলি খুব সোজা ফরোয়ার্ড এবং ব্যবহার করা সহজ: https://webbot.readthedocs.io


এই পরীক্ষাটি দুর্দান্ত কাজ করে। এটি কি কাজ করবে autocomplete=off?
এস অ্যান্ড্রু

উইন 64 বিট ইনস্টল করা হয় না। ত্রুটি:Could not find a version that satisfies the requirement webbot (from versions: 0.0.1.win-amd64)
মোস্তফা

পাইথন 3
ভাট

কীভাবে ওয়েববোটে আইফ্রেমে পরিচালনা করবেন ?? আমি মানে একটি পৃষ্ঠাতে লোড হওয়ার পরে পপআপগুলি করা একটি আইফ্রেমে বন্ধ করতে হবে ..
অরিহন্ত জয়ন

7

সাধারণভাবে ওয়েবসাইটগুলি বিভিন্নভাবে অনুমোদন পরীক্ষা করতে পারে, তবে আপনি যেটিকে টার্গেট করছেন তার পক্ষে এটি আপনার পক্ষে যুক্তিসঙ্গতভাবে সহজ বলে মনে হচ্ছে।

আপনার যা দরকার তা হয় POSTথেকে auth/loginআপনি যে URL টি দেখতে সেখানে বিভিন্ন ক্ষেত্রের সাথে একটি ফর্ম এনকোডেড ফোঁটা (লেবেল ভুলবেন forতারা মানুষের দর্শকদের জন্য করছি প্রসাধন)। handle=whatever&password-clear=pwdএবং তাই, যতক্ষণ না আপনি হ্যান্ডেল (একেএ ইমেল) এবং পাসওয়ার্ডের মানগুলি জানেন তা আপনার ভাল হওয়া উচিত।

সম্ভবতঃ পোষ্ট আপনাকে কিছু "আপনি সফলভাবে লগইন করেছেন" পৃষ্ঠায় আপনাকে পুনর্নির্দেশ করবে Set-Cookieআপনার শিরোনামটি যাচাই করার শিরোনাম দিয়ে (সেই কুকিটি সংরক্ষণ করতে ভুলবেন না এবং সেশনটির সাথে আরও ইন্টারঅ্যাকশন করার জন্য এটি আবার প্রেরণ করবেন!)।


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