1. 程式人生 > >Python3下模擬登入知乎

Python3下模擬登入知乎

程式碼:

# -*- coding:UTF-8 -*-

import  requests , time
import  hmac ,json
from bs4 import BeautifulSoup
from hashlib import sha1


def get_captcha(data,need_cap):
    ''' 處理驗證碼 '''
    if need_cap is False:
        return
    with open('captcha.gif','wb') as fb:
        fb.write(data)
    return input('captcha:')
    
def get_signature(grantType,clientId,source,timestamp):
    ''' 處理簽名 '''
	
    hm = hmac.new(b'd1b964811afb40118a12068ff74a12f4',None,sha1)
    hm.update(str.encode(grantType))
    hm.update(str.encode(clientId))
    hm.update(str.encode(source))
    hm.update(str.encode(timestamp))

    return  str(hm.hexdigest())



def login(username,password,oncaptcha,sessiona,headers):
    ''' 處理登入 '''
    
    resp1 = sessiona.get('https://www.zhihu.com/signin',headers=headers)  # 拿cookie:_xsrf
    resp2 = sessiona.get('https://www.zhihu.com/api/v3/oauth/captcha?lang=cn',headers=headers)  # 拿cookie:capsion_ticket 
    need_cap = json.loads(resp2.text)["show_captcha"]  # {"show_captcha":false} 表示不用驗證碼

    grantType = 'password'
    clientId = 'c3cef7c66a1843f8b3a9e6a1e3160e20'
    source ='com.zhihu.web'
    timestamp = str((time.time()*1000)).split('.')[0]  # 簽名只按這個時間戳變化
       
    captcha_content = sessiona.get('https://www.zhihu.com/captcha.gif?r=%d&type=login'%(time.time()*1000),headers=headers).content
    
    data = {
        "client_id":clientId,
        "grant_type":grantType,
        "timestamp":timestamp,
        "source":source,
        "signature": get_signature(grantType,clientId,source,timestamp), # 獲取簽名
        "username":username,
        "password":password,
        "lang":"cn",
        "captcha":oncaptcha(captcha_content,need_cap), # 獲取圖片驗證碼
        "ref_source":"other_",
        "utm_source":""
    }
    
    print("**2**: "+str(data))
    print("-"*50)
    resp = sessiona.post('https://www.zhihu.com/api/v3/oauth/sign_in',data,headers=headers).content
    print(BeautifulSoup(resp,'html.parser'))
    
    print("-"*50)
    return resp 

if __name__ == "__main__":
    sessiona = requests.Session()
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0','authorization':'oauth c3cef7c66a1843f8b3a9e6a1e3160e20'}

    login('
[email protected]
','12345678',get_captcha,sessiona,headers) # 使用者名稱密碼換自己的就好了 resp = sessiona.get('https://www.zhihu.com/inbox',headers=headers) # 登入進去了,可以看私信了 print(BeautifulSoup(resp.content ,'html.parser')) ### chcp 65001 (win下改變cmd字符集) ### python c:\python34\login_zhihu.py ### 有非常無語的事情發生,還以為程式碼沒生效

小編準備了一份Python的最新系統資料,548-377-875 都在這個群裡了~

相關推薦

Python3模擬登入

程式碼: # -*- coding:UTF-8 -*- import requests , time import hmac ,json from bs4 import BeautifulSoup from hashlib import sha1 def get_

Python3 模擬登入(requests)

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

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

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

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

selenium模擬登入

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

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

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

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

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

Python 模擬登入

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

python3 requests 模擬登入狀態的兩種方式

python version: 3.6 模擬登入狀態,即有些操作是必須使用者登入後才可以進行的,技術上與cookie和session有關。 cookie是使用者登入後,伺服器返回給客戶端的,客戶端儲存cookie後,用於告訴服務端我是登入過的。 session是後端用以鑑定使用者是

python3 後臺模擬登入

def Form_Data(username,password): data = { ‘username’:username, ‘password’:password } post_data = urllib.parse.urlencode(data).encode(‘utf-8’) ret

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

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

python爬蟲模擬登陸

自從暑假學了大概一個月左右的爬蟲,開學之後就沒怎麼搞爬蟲了,當時也就學到scrapy框架就放下了,大致瞭解了一下框架,不是太理解,但是在這之前本人的爬蟲水平也僅僅侷限於爬取簡單頁面,爬取動態頁面也稍微瞭解下,但是一直沒有學模擬登陸,因為當時怎麼也搞不懂模擬登陸是

requests登入新版

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

Scrapy 模擬登陸--抓取熱點話題

折騰了將近兩天,中間數次想要放棄,還好硬著頭皮搞下去了,在此分享出來,希望有同等需求的各位能少走一些彎路。 原始碼放在了github上, 歡迎前往檢視。 若是幫你解決了問題,或者給了你啟發,不要吝嗇給加一星。 工具準備 在開始之前,請確保 scrpay 正確安裝,手頭有一款簡潔

python requests登入

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

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

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

最新,最新!selenium模擬登陸

md知乎的程式猿是幹什麼的我不知道,反爬真不一般,深受其害!!! 試了一千萬種方法,哎,終於呀(千萬不要被知乎的程式猿看到了,要不然就又要涼涼了),其他方法特別是用request的好像都失效了(哪位大神要是還能用告訴兄弟一聲) 算是半手動吧,selenium裡面的js模組

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

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

使用OKHttp模擬登陸,兼談OKHttp中Cookie的使用!

本文主要是想和大家探討技術,讓大家學會Cookie的使用,切勿做違法之事!很多Android初學者在剛開始學習的時候,或多或少都想自己搞個應用出來,把自己學的十八般武藝全都用在這個APP上,其實這個想法很好,專案驅動學習,效率更高,這是大學老師教給我的。可是一個APP,如果純