【问题标题】:Python requests post doing nothingPython 请求后无所事事
【发布时间】:2016-06-26 03:34:36
【问题描述】:

我正在使用requestscfscrape 库登录https://kissanime.to/Login

'''Login to website'''
def login(self, usr, pw):
    login_url = 'https://kissanime.to/Login'
    sess = requests.Session()

    # login credentials
    payload = {
        'username': usr,
        'password': pw,
        'redirect': ''
    }

    # Creating cfscrape instance of the session
    scraper_sess = cfscrape.create_scraper(sess)
    a = scraper_sess.post(login_url, data=payload)
    print(a.text)
    print(a.status_code)

a.text 给了我相同的登录页面 a.status_code 给我 200

这意味着我的登录根本不起作用。我错过了什么吗?根据chrome的网络监视器,我也应该得到status code 302

发布数据图像:

【问题讨论】:

    标签: python python-3.x python-requests


    【解决方案1】:

    我使用mechanicalsoup解决了它

    代码:

    import mechanicalsoup
    
    '''Login to website'''
    def login(self, usr, pw):
        login_url = 'https://kissanime.to/Login'
    
        # Creating cfscrape instance
        self.r = cfscrape.create_scraper()
        login_page = self.r.get(login_url)
    
        # Creating a mechanicalsoup browser instance with 
        # response object of cfscrape
        browser = mechanicalsoup.Browser(self.r)
        soup = BeautifulSoup(login_page.text, 'html.parser')
    
        # grab the login form
        login_form = soup.find('form', {'id':'formLogin'})
    
        # find login and password inputs
        login_form.find('input', {'name': 'username'})['value'] = usr
        login_form.find('input', {'name': 'password'})['value'] = pw
    
        browser.submit(login_form, login_page.url)
    

    【讨论】:

      【解决方案2】:

      此内容来自请求文档:

      许多需要身份验证的 Web 服务都接受 HTTP 基本身份验证。这是最简单的一种,Requests 直接支持它。

      requests.get('https://api.github.com/user', auth=HTTPBasicAuth('user', 'pass'))
      

      您必须以 JSON 格式发送有效负载..

      import requests,json
      '''Login to website'''
      def login(self, usr, pw):
          login_url = 'https://kissanime.to/Login'
          sess = requests.Session()
      
          # login credentials
          payload = {
              'username': usr,
              'password': pw,
              'redirect': ''
          }
      
          # Creating cfscrape instance of the session
          scraper_sess = cfscrape.create_scraper(sess)
          a = scraper_sess.post(login_url, data=json.dumps(payload))
          print(a.text)
          print(a.status_code)
      

      参考:http://docs.python-requests.org/en/master/user/authentication/

      【讨论】:

      • 您可以尝试使用 Selenium Webdriver 登录吗
      • @min2bro 是的,我已经尝试过使用 Selenium 并且它有效。但它很慢。所以,我想处理请求。
      • 我实际上已经尝试过了,我只是再次尝试。同样的结果。 :(
      • 您需要将用户名和密码作为身份验证标头添加到请求中。您可以在此处找到更多详细信息:docs.python-requests.org/en/latest/user/advanced
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-29
      • 2015-05-10
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多