1. 程式人生 > >python requests登入知乎

python requests登入知乎

這裡用python模擬登入知乎,並確定登入的情況:
class ZhiHu(object):

    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:47.0)'
                             ' Gecko/20100101 Firefox/47.0'}

    def __init__(self):
        self.session = requests.Session()

    def login(self, phone_num, password):
        data = {
            "_xsrf": self._xsrf(),
            "phone_num": phone_num,
            "password": password,
            "remember_me": True,
            "captcha": self._captcha()
        }
        post_url = 'https://www.zhihu.com/login/phone_num'
        r = self.session.post(post_url, data, headers=self.headers)
        print(r.json())

    def _xsrf(self):
        login_url = "https://www.zhihu.com/#signin"
        respond = self.session.get(login_url, headers=self.headers)
        xsrf = re.search(r'name="_xsrf"\s+value="(.*)"', respond.text)
        return xsrf.group(1)

    def _captcha(self):
        url = 'https://www.zhihu.com/captcha.gif?r={}&type=login'.format((time.time()*1000))
        try:
            content = self.session.get(url, headers=self.headers).content
            with open('captcha.png', 'wb') as f:
                f.write(content)
                f.close()
        except HTTPError:
            print('failed to download the captcha image!!!')
            exit(1)
        print('please enter the captcha: ')
        return input().rstrip()

if __name__ == '__main__':
    zhihu = ZhiHu()
    zhihu.login('xxxxx', 'xxxx')

解析:

1.當然是先建立一個session物件,其會儲存網路通訊時的資訊,包括cookies之類的。

2.用post方法傳輸表格資料這個就不用多講啦,至於需要傳輸哪一些資料的話,用Chrome或360遊覽器自帶的工具進行跟蹤查詢就行。在登入頁面滑鼠右鍵‘檢查‘或“審查元素”。

3.值得注意的一點是,提交表單資料的URL與登入頁面的URL是不一樣的,具體怎麼得到,同上使用工具去查詢。

4.注意到一個元素xsrf,此為為安全起見的不重複隨機數。

5.最後一點就是不要把URL中的https寫成http, 前者為密文傳輸, 後者為明文傳輸。

6.關於怎樣判斷登入情況的:程式碼print(r.json())將得到一個字典,那裡可以清楚地看到登陸的情況。

7.程式碼在python3.6 pychram中通過。

如果上述不能通過或有問題,歡迎評論。

還有。。。。

按照同樣的方法嘗試登入教務網,為什麼不行。。。。。????

導致不敢上傳。

相關推薦

python requests登入

這裡用python模擬登入知乎,並確定登入的情況:class ZhiHu(object): headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:47.0)'

requests登入新版

#coding:utf-8 #__author__='wang' import time,json,base64 ''' requests登陸知乎流程: requests登入知乎流程: 1>想到去抓包,檢視使用者名稱,密碼錶單資料的提交地址,也就是POST請求將表單資

Python 模擬登入

前言 前天看到一個爬取了知乎50多萬評論的帖子, 羨慕的同時也想自己來嘗試一下。看看能不能獲取一些有價值的資訊。 必備知識點 下面簡單的來談談我對常見的防爬蟲的一些技巧的理解。 headers 現在很多伺服器都對爬蟲進行了限制,有一個

Python 爬蟲-模擬登入-爬取拉勾網職位資訊

用Python寫爬蟲是很方便的,最近看了xlzd.me的文章,他的文章寫的很到位,提供了很好的思路。因為他的文章部分程式碼省略了。下面是基於他的文章的三個程式碼片段: 基於Python3,Python2的話需要修改下input輸入函式和print的用法。 爬取豆瓣電影top250 爬取拉勾網職位資訊 模擬

Python3 模擬登入requests

# -*- coding: utf-8 -*- """ 知乎登入分為兩種登入 一是手機登入 API : https://www.zhihu.com/login/phone_num 二是郵箱登入 API : https://www.zhihu.c

python爬蟲scrapy框架——人工識別登入倒立文字驗證碼和數字英文驗證碼(2)

import scrapy import re import json class ZhihuSpider(scrapy.Spider): name = 'zhihu' allowed_domains = ['www.zhihu.com'] start_urls = ['http

[Python]網路爬蟲(三):使用cookiejar管理cookie 以及 模擬登入

大家好哈,上一節我們研究了一下爬蟲的異常處理問題,那麼接下來我們一起來看一下Cookie的使用。 為什麼要使用Cookie呢? Cookie,指某些網站為了辨別使用者身份、進行session跟蹤而儲存在使用者本地終端上的資料(通常經過加密) 比如說有些網站需要登入後才

Python爬蟲倒立文字驗證碼登入

引言 本文解析了知乎倒立文字驗證碼的原理,人工識別倒立文字所在位置後組織報文成功登入。 原理 關於登入的基本原理可參考Python爬蟲之模擬知乎登入,只不過這篇文章中登入的驗證碼為“數字英文”模式,而當前登入時是“點選倒立文字”模式,所以主要記錄這部分。

python爬蟲scrapy框架——人工識別登入倒立文字驗證碼和數字英文驗證碼

import requests try: import cookielib except: import http.cookiejar as cookielib import re import time def get_xsrf(): # 獲取xsrf code res

python--python3爬蟲之模擬登入

程式碼在python3環境下測試通過: from bs4 import BeautifulSoup import requests url = 'http://www.zhihu.com' login_url = url+'/login/email' captcha_

selenium 模擬登入和微博

sleep https epo element select selenium clas .com -c pip install selenium __author__ = ‘admin‘ __date__ = 2017 / 11 / 3 from selenium im

Python爬去上問題下所有圖片

sts dal b- log email token db4 trie fin from zhihu_oauth import ZhihuClient from zhihu_oauth.exception import NeedCaptchaException cli

爬蟲入門到精通-headers的詳細講解(模擬登入

直接開始案例吧。 本次我們實現如何模擬登陸知乎。 1.抓包 首先開啟知乎登入頁 知乎 - 與世界分享你的知識、經驗和見解 注意開啟開發者工具後點擊“preserve log”,密碼記得故意輸入錯誤,然後點選登入   我們很簡單的就找到了 我們需要的請

Scrapy Selenium實戰:Selenium登入儲存cookies後訪問需要登入頁面

Scrapy Selenium實戰:Selenium登入知乎儲存cookies後訪問需要登入頁面 安裝 chromedriver 新建爬蟲 zhihu.py 獲取瀏覽器真實的User-Agent 執行驗證

爬蟲入門系列(三):用 requests 構建 API

爬蟲入門系列目錄: 在爬蟲系列文章 優雅的HTTP庫requests 中介紹了 requests 的使用方式,這一次我們用 requests 構建一個知乎 API,功能包括:私信傳送、文章點贊、使用者關注等,因為任何涉及使用者操作的功能都需要登入後才操作,所以在閱讀這篇文章前建議先了解

python爬取專欄使用者評論資訊

工具:python3,pycharm,火狐瀏覽器 模組:json,requests,time 登入知乎,進入專欄。 進入後隨便選擇一個專欄,我們選擇一個粉絲比較多的。點選進去。 其實,我們可以爬取這個專欄的所有文章,開啟開發者工具F12,點選重新整理 找

python爬取中的圖片

首先,我們檢視一下知乎的robots協議。 User-agent: * Disallow: / 知乎是不允許爬取其根目錄的。 但是,我們只是用於實驗,而且訪問頻率和正常訪問差距不大,所以可以爬取。 先明確目的: 對手動輸入的網址進行解析 把爬取到的圖片儲存到指定目

python 抓取指定回答下的視訊

前言 現在知乎允許上傳視訊,奈何不能下載視訊,好氣哦,無奈之下研究一下了,然後擼了程式碼,方便下載視訊儲存。 接下來以 貓為什麼一點也不怕蛇? 回答為例,分享一下整個下載過程。 除錯一下 開啟 F12, 找到游標,如下圖: 然後將游標移動到視訊上。如下圖: 咦這是什麼?視野中出現了一條神祕

python爬取專欄文章標題及URL

# -*- coding:utf-8 -*- from selenium import webdriver import time # 執行程式要安裝selenium模組,並下載Chrome瀏覽器驅動

selenium模擬登入

Selenium是一個用於Web應用程式測試的工具。Selenium測試直接執行在瀏覽器中,就像真正的使用者在操作一樣。支援的瀏覽器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。這個工具的主