pythonシミュレーション登録サイト

6134 ワード

前回はC++の小さな爬虫類を書いて、いくつかのサイトの画像に登ることができますが、一部のサイトは登録してからコンテンツにアクセスする必要があります.C++を使うとopenSSLが必要で、構成が面倒そうなのでpythonを選び、requesネットワークライブラリを使用しました.
 シミュレーションログイン、つまりログインの過程、および私たちがホームページで発行した要求が何なのかを知る必要があります.例えば、アカウント、パスワード、検証コードなど、上記のデータを取得し、POSTを出た後、cookie(ユーザーのアイデンティティを識別し、データを格納するために使用される)を記録します.そしてこのクッキーをロードすることで、サイト内の他のサイトにアクセスします.  本来は知乎を登ろうとしたが、知乎は今改版し、提出すべきデータがたくさん入っていることを知っていて、私はどのようにしたのか分からないが、豆弁の話、私はホームページのコードを見ていると、検証コードの住所は毎回変化していることに気づいたが、知乎の検証コードは1つの住所で、ただ戻った結果は違っていて、豆弁の毎回は違っていて、だから手がつけられません.次のコードはクッキーをロードしてアクセスします.
  douban()関数を実行するとcaptchaがロードされ、opencvのオープンピクチャ機能で開き、ピクチャの内容を出力し、データPOSTをサーバに出力し、テストに成功したかどうかは、1つのサイト内のユーザーのみのアクセスを要求するサイトを通じて、成功すればコンテンツを返します.さもないとログインの内部に戻ります(現在検証コードが手に入らないので、クッキーをロードしてみました)
コード:
from http import cookiejar
import requests
import cv2
import re

def downLoadCaptcha(url):
    captcha=requests.get(url)
    image=open('captcha.jpg','wb')
    image.write(captcha.content)
    image.close()

def printCaptcha():
    img=cv2.imread('captcha.jpg')
    cv2.imshow('yzm',img)
    cv2.waitKey()
    str=input('     :')
    print('       :%s'%str)
    return str
def getCaptchaUrlAndId(url):
    login=requests.get(url)
    tmp=str(login.content.decode('utf_8'))
    ruler=re.compile(r'name="captcha-id"(.*)value="(.*)"')
    match=ruler.search(tmp)
    if match:
        #  captcha  
        temp='https://www.douban.com/misc/captcha?id='+match.group(2)+'&size=s'
        mlist=[match.group(2),temp]
        return mlist

def readCookie(cookieName):
    f=open(cookieName,'r')
    temp=f.read()
    f.close()
    cookie={}
    for i in temp.split('
'
): key,value=i.split(':',1) cookie[key]=value print(cookie) return cookie # def douban(): username='******@qq.com' password='*****' data={ 'form_email':username, 'form_password':password, 'redir':'http://www.douban.com', 'captcha-solution':'', 'captcha-id':'', 'source':'index_nav', } url='https://accounts.douban.com/login' #afturl , afturl='https://www.douban.com/people/172618226' # captcha=getCaptchaUrlAndId(url) captcha_id=captcha[0] print('captcha url :%s'%captcha[1]) # downLoadCaptcha(captcha[1]) yzm=printCaptcha() data['captcha-solution']=str(yzm) data['captcha-id']=str(captcha_id) print(data) print(' :%s'%yzm) #post login=requests.post(url,data=data) loginafter=requests.get(afturl,cookies=login.cookies) # f=open('text.txt','wb') f.write(loginafter.content) f.close() #main cookie def main(): url='https://accounts.douban.com/login' cookie=readCookie('cookies.txt') loginafter=requests.get('https://www.douban.com/people/172618226',cookies=cookie) f=open('text1.txt','wb') f.write(loginafter.content) f.close() main()