python爬蟲(chóng)模擬登錄是什么意思 Python爬蟲(chóng)模擬登陸
有些網(wǎng)站需要登錄后才能爬取所需要的信息,此時(shí)可以設(shè)計(jì)爬蟲(chóng)進(jìn)行模擬登錄,原理是利用瀏覽器cookie。
一、瀏覽器訪問(wèn)服務(wù)器的過(guò)程:
(1)瀏覽器(客戶(hù)端)向Web服務(wù)器發(fā)出一個(gè)HTTP請(qǐng)求(Http request);
(2)Web服務(wù)器收到請(qǐng)求,發(fā)回響應(yīng)信息(Http Response);
(3)瀏覽器解析內(nèi)容呈現(xiàn)給用戶(hù)。
二、利用Fiddler查看瀏覽器行為信息:
Http請(qǐng)求消息:
(1)起始行:包括請(qǐng)求方法、請(qǐng)求的資源、HTTP協(xié)議的版本號(hào)
這里GET請(qǐng)求沒(méi)有消息主體,因此消息頭后的空白行中沒(méi)有其他數(shù)據(jù)。
(2)消息頭:包含各種屬性
(3)消息頭結(jié)束后的空白行
(4)可選的消息體:包含數(shù)據(jù)
Http響應(yīng)消息:
(1)起始行:包括HTTP協(xié)議版本,http狀態(tài)碼和狀態(tài)
(2)消息頭:包含各種屬性
(3)消息體:包含數(shù)據(jù)
從上面可見(jiàn),cookie在Http請(qǐng)求和Http響應(yīng)的頭消息中是很重要的屬性。
三、什么是cookie:
當(dāng)用戶(hù)通過(guò)瀏覽器首次訪問(wèn)一個(gè)域名時(shí),訪問(wèn)的Web服務(wù)器會(huì)給客戶(hù)端發(fā)送數(shù)據(jù),以保持Web服務(wù)器與客戶(hù)端之間的狀態(tài),這些數(shù)據(jù)就是Cookie。
它是站點(diǎn)創(chuàng)建的,為了辨別用戶(hù)身份而儲(chǔ)存在用戶(hù)本地終端上的數(shù)據(jù),其中的信息一般都是經(jīng)過(guò)加密的,存在緩存或硬盤(pán)中,在硬盤(pán)中是一些小文本文件。
當(dāng)訪問(wèn)該網(wǎng)站時(shí),就會(huì)讀取對(duì)應(yīng)網(wǎng)站的Cookie信息。
作用:記錄不同用戶(hù)的訪問(wèn)狀態(tài)。
四、操作過(guò)程:
在知乎登錄界面輸入用戶(hù)名和密碼,然后登錄。
利用Fiddler來(lái)查看這期間瀏覽器和知乎服務(wù)器之間的信息交互。
(1)瀏覽器給服務(wù)器發(fā)送了一個(gè)POST,攜帶帳號(hào)和密碼等信息;
從起始行可見(jiàn),POST是發(fā)送給http://www.zhihu.com/login/email這個(gè)網(wǎng)址,內(nèi)容在最下面消息體里,
也可以在Fiddler的Webforms標(biāo)簽下查看POST的內(nèi)容,如下:
可以發(fā)現(xiàn),信息里不僅有帳號(hào)(email)和密碼(password),其實(shí)還有_xsrf(具體作用往后看)和remember_me(登錄界面的“記住我”)兩個(gè)值。
那么,在python爬蟲(chóng)中將這些信息同樣發(fā)送,就可以模擬登錄。
在發(fā)送的信息里出現(xiàn)了一個(gè)項(xiàng):_xsrf,值為2fc4ab0f0f144c2e478c436fe3160443
這個(gè)項(xiàng)其實(shí)是在訪問(wèn)知乎登錄網(wǎng)頁(yè)https://www.zhihu.com/#signin時(shí),網(wǎng)頁(yè)發(fā)送過(guò)來(lái)的信息,在瀏覽器源碼中可見(jiàn):
所以需要先從登錄網(wǎng)址https://www.zhihu.com/#signin獲取這個(gè)_xsrf的值,
并連同帳號(hào)、密碼等信息再POST到真正接收請(qǐng)求的http://www.zhihu.com/login/email網(wǎng)址。
(2)獲取_xsrf的值:
爬取登錄網(wǎng)址https://www.zhihu.com/#signin,從內(nèi)容中獲取_xsrf的值。
正則表達(dá)式。
(3)發(fā)送請(qǐng)求:
xsrf = 獲取的_xsrf的值
data = {"email":"xxx","password":"xxx","_xsrf":xsrf}
login = s.post(loginURL, data = data, headers = headers)
loginURL:是真正POST到的網(wǎng)址,不一定等同于登錄頁(yè)面的網(wǎng)址;
(4)爬取登錄后的網(wǎng)頁(yè):
response = s.get(getURL, cookies = login.cookies, headers = headers)
getURL:要爬取的登陸后的網(wǎng)頁(yè);
login.cookies:登陸時(shí)獲取的cookie信息,存儲(chǔ)在login中。
(5)輸出內(nèi)容:
print response.content
五、具體代碼:
[python] view plain copy
# -*- coding:utf-8 -*-
# author:Simon
# updatetime:2016年3月17日 17:35:35
# 功能:爬蟲(chóng)之模擬登錄,urllib和requests都用了...
import urllib
import urllib2
import requests
import re
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.12 Safari/535.11'}
def get_xsrf():
firstURL = "http://www.zhihu.com/#signin"
request = urllib2.Request(firstURL,headers = headers)
response = urllib2.urlopen(request)
content = response.read()
pattern = re.compile(r'name="_xsrf" value="(.*?)"/>',re.S)
_xsrf = re.findall(pattern,content)
return _xsrf[0]
def login(par1):
s = requests.session()
afterURL = "https://www.zhihu.com/explore" # 想要爬取的登錄后的頁(yè)面
loginURL = "http://www.zhihu.com/login/email" # POST發(fā)送到的網(wǎng)址
login = s.post(loginURL, data = par1, headers = headers) # 發(fā)送登錄信息,返回響應(yīng)信息(包含cookie)
response = s.get(afterURL, cookies = login.cookies, headers = headers) # 獲得登陸后的響應(yīng)信息,使用之前的cookie
return response.content
xsrf = get_xsrf()
print "_xsrf的值是:" + xsrf
data = {"email":"xxx","password":"xxx","_xsrf":xsrf}
print login(data)
六、補(bǔ)充:
用知乎網(wǎng)做完試驗(yàn),發(fā)現(xiàn)這里好像并不需要發(fā)送_xsrf這個(gè)值。
不過(guò)有的網(wǎng)站在登陸時(shí)確實(shí)需要發(fā)送類(lèi)似這樣的一個(gè)值,可以用上述方法。
python 識(shí)別滑動(dòng)驗(yàn)證碼模擬登錄
在現(xiàn)代安全措施日益嚴(yán)密的網(wǎng)絡(luò)環(huán)境中,Python 爬蟲(chóng)技術(shù)在模擬滑動(dòng)驗(yàn)證碼登錄時(shí)遇到了挑戰(zhàn)。要破解這類(lèi)驗(yàn)證碼,我們需要采用特定的方法。滑動(dòng)驗(yàn)證碼模擬登錄的步驟如下:首先,利用Python的selenium庫(kù)打開(kāi)瀏覽器并定位到登錄頁(yè)面。推薦使用Firefox瀏覽器,版本121.0,驅(qū)動(dòng)geckodriver.exe為0.32.0。雖然Chrome瀏覽...
Python爬蟲(chóng)基礎(chǔ)(4)——requests庫(kù)post、session請(qǐng)求方法
Python爬蟲(chóng)中requests庫(kù)的post和session請(qǐng)求功能詳解 requests庫(kù),作為Python中最常用的HTTP庫(kù)之一,其簡(jiǎn)潔的API設(shè)計(jì)使得HTTP請(qǐng)求變得易如反掌。它支持多種請(qǐng)求類(lèi)型,包括get、post、put、delete和head,其中post常用于數(shù)據(jù)提交,如表單填充或登錄操作。接下來(lái),我們將深入了解post和session請(qǐng)求的使用方法,以及...
爬蟲(chóng)python什么意思
如果我們把互聯(lián)網(wǎng)比作一張大的蜘蛛網(wǎng),數(shù)據(jù)便是存放于蜘蛛網(wǎng)的各個(gè)節(jié)點(diǎn),而Python爬蟲(chóng)就是一只小蜘蛛,沿著網(wǎng)絡(luò)抓取自己的獵物(數(shù)據(jù))爬蟲(chóng)指的是:向網(wǎng)站發(fā)起請(qǐng)求,獲取資源后分析并提取有用數(shù)據(jù)的程序;從技術(shù)層面來(lái)說(shuō)就是 通過(guò)程序模擬瀏覽器請(qǐng)求站點(diǎn)的行為,把站點(diǎn)返回的HTML代碼\/JSON數(shù)據(jù)\/二進(jìn)制數(shù)據(jù)(...
Python 爬取https的登錄界面,怎么爬取成功,謝謝
在嘗試通過(guò)Python爬取HTTPS登錄頁(yè)面時(shí),我遇到了不少挑戰(zhàn),最終成功的關(guān)鍵在于正確使用了HTTPS相關(guān)的函數(shù)。研究過(guò)程中,我注意到了兩點(diǎn)關(guān)鍵要素。首先,模擬POST登錄時(shí),header中的cookie值需要根據(jù)不同的網(wǎng)站進(jìn)行適當(dāng)調(diào)整。其次,GET請(qǐng)求頁(yè)面時(shí),應(yīng)當(dāng)攜帶POST響應(yīng)中的set-cookie信息,這樣才能確保登錄成功。具體...
python爬蟲(chóng)是什么意思
1. 網(wǎng)絡(luò)爬蟲(chóng),亦稱(chēng)為網(wǎng)頁(yè)蜘蛛、網(wǎng)絡(luò)機(jī)器人或網(wǎng)頁(yè)追逐者,在FOAF社區(qū)中常被稱(chēng)作網(wǎng)頁(yè)蜘蛛。2. 它們遵循特定規(guī)則,自動(dòng)從萬(wàn)維網(wǎng)搜集信息。3. 除了常見(jiàn)的名稱(chēng)外,網(wǎng)絡(luò)爬蟲(chóng)還有如螞蟻、自動(dòng)索引、模擬程序和蠕蟲(chóng)等較少使用的別稱(chēng)。4. 網(wǎng)絡(luò)爬蟲(chóng)的基本功能是自動(dòng)獲取網(wǎng)頁(yè)上的數(shù)據(jù),即實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)抓取。5. ...
python爬蟲(chóng)系列之Session相關(guān)知識(shí)
Cookie和Session在網(wǎng)站反爬應(yīng)用中常見(jiàn),如需登錄才能進(jìn)行下一步操作。爬蟲(chóng)模擬真實(shí)用戶(hù)登錄方式多樣:第一,爬蟲(chóng)代碼中request.post參數(shù)data包含賬號(hào)信息;第二,訪問(wèn)頁(yè)面時(shí),從header中獲取cookie,復(fù)制至Python腳本headers;注意cookie時(shí)效性問(wèn)題。第三,使用session方法,推薦方式之一,如Python中利用Keep-Alive...
pythonselenium模擬登錄,post請(qǐng)求403,如何破?
利用 Selenium 模擬登錄知乎遭遇 403 錯(cuò)誤,意味著被平臺(tái)識(shí)別為爬蟲(chóng)而阻止訪問(wèn)。為解決此問(wèn)題,首先,需明確的是,Selenium 可能無(wú)法順利通過(guò)知乎的反爬機(jī)制。一種可行的替代方案是嘗試使用 Puppeteer。Puppeteer 是一個(gè) Node 庫(kù),允許在無(wú)界面的環(huán)境中執(zhí)行 Chromium 或者 Chrome 瀏覽器。它能生成模擬用戶(hù)...
Python爬蟲(chóng)——爬蟲(chóng)中常見(jiàn)的反爬手段和解決思路分享
二、常見(jiàn)反爬手段 1. Headers字段:網(wǎng)站可能檢查請(qǐng)求的User-Agent,限制非正常行為的爬蟲(chóng)訪問(wèn)。解決方法是設(shè)置正確的User-Agent或使用代理池。2. Referer字段:服務(wù)器依據(jù)請(qǐng)求來(lái)源判斷請(qǐng)求合法性。添加正確的Referer字段以通過(guò)驗(yàn)證。3. Cookie:網(wǎng)站利用cookie檢查訪問(wèn)權(quán)限,避免未授權(quán)的抓取。模擬登錄獲取...
Python爬蟲(chóng)是什么
Python爬蟲(chóng)是一種使用Python編寫(xiě)的自動(dòng)化程序,用于從網(wǎng)上抓取數(shù)據(jù)。簡(jiǎn)而言之,爬蟲(chóng)就是模擬人類(lèi)在網(wǎng)頁(yè)上的行為,通過(guò)HTTP\/HTTPS協(xié)議訪問(wèn)網(wǎng)頁(yè),并提取所需的信息。爬蟲(chóng)程序通過(guò)解析HTML、XML等文檔,提取其中的數(shù)據(jù),再進(jìn)行處理和分析,最終將數(shù)據(jù)存儲(chǔ)到本地?cái)?shù)據(jù)庫(kù)或文件中。爬蟲(chóng)程序廣泛應(yīng)用于各種數(shù)據(jù)挖掘、...
在使用Python爬蟲(chóng)時(shí)遇到403 Forbidden錯(cuò)誤解決辦法匯總
理解403 Forbidden錯(cuò)誤至關(guān)重要。這是一種由服務(wù)器返回的錯(cuò)誤碼,表示拒絕了您的請(qǐng)求。網(wǎng)站通常用此方式阻止爬蟲(chóng)程序的訪問(wèn),以防非正常或大量訪問(wèn)。面對(duì)此錯(cuò)誤,您可以嘗試以下幾種常見(jiàn)解決辦法:對(duì)于那些對(duì)未登錄用戶(hù)實(shí)施限制的網(wǎng)站,模擬登錄是有效途徑。獲取登錄狀態(tài)后,您可以繼續(xù)進(jìn)行爬取操作。為了繞過(guò)...
相關(guān)評(píng)說(shuō):
道孚縣齒形: ______ 簡(jiǎn)單說(shuō)一下流程:先用cookielib獲取cookie,再用獲取到的cookie,進(jìn)入需要登錄的網(wǎng)站.01 # -*- coding: utf-8 -*- 02 # !/usr/bin/python 03 04 import urllib2 05 import urllib 06 import cookielib 07 import re 08 09 auth_url = 'http://www.nowamagic.net...
道孚縣齒形: ______ urllib2 這個(gè)模塊可以模擬瀏覽器打開(kāi)網(wǎng)頁(yè),使用post方式的時(shí)候加入你需要post的參數(shù)就可以了,具體的參數(shù)你可以看登陸的網(wǎng)站需要post什么數(shù)據(jù),一般網(wǎng)站登陸不外是3個(gè)數(shù)據(jù):用戶(hù)名,密碼,驗(yàn)證碼
道孚縣齒形: ______ 整體邏輯應(yīng)該沒(méi)有問(wèn)題. 前幾個(gè)星期我做了類(lèi)似的一個(gè)東西,因?yàn)椴恍⌒拇蝈e(cuò)了一個(gè)字符,浪費(fèi)了我5個(gè)小時(shí)的時(shí)間.所以我猜你這個(gè)程序應(yīng)該沒(méi)有問(wèn)題.有問(wèn)題的是一些小地方.我懷疑你在login的時(shí)候,那個(gè)headers并沒(méi)有把你收集到的cookie發(fā)送出去.你可以先弄一個(gè)抓包工具,檢查一下你發(fā)送出去的包,很可能沒(méi)有帶cookie出去.另外實(shí)在不成,硬寫(xiě)進(jìn)去. 先從cj里取出cookie,自己拼裝一下后放在headers里.
道孚縣齒形: ______ pexpect 是 don libes 的 expect 語(yǔ)言的一個(gè) python 實(shí)現(xiàn),是一個(gè)用來(lái)啟動(dòng)子程序,并使用正則表達(dá)式對(duì)程序輸出做出特定響應(yīng),以此實(shí)現(xiàn)與其自動(dòng)交互的 python 模塊. pexpect 的使用范圍很廣,可以用來(lái)實(shí)現(xiàn)與 ssh、ftp 、telnet 等程序的自動(dòng)交...
道孚縣齒形: ______ 抓取網(wǎng)頁(yè)所有url的簡(jiǎn)單Python爬蟲(chóng)源碼,只用到了一個(gè)Python標(biāo)準(zhǔn)庫(kù)urllib模塊
道孚縣齒形: ______ 兩者應(yīng)該實(shí)現(xiàn)的是相同的功能 只不過(guò)一個(gè)是使用的內(nèi)置的包urllib2,一個(gè)是requests包 requests包提供的接口更簡(jiǎn)潔,易于理解,我更喜歡使用requests包
道孚縣齒形: ______ 1.服務(wù)器端重定向,在服務(wù)器端完成,一般來(lái)說(shuō)爬蟲(chóng)可以自適應(yīng),是不需要特別處理的,如響應(yīng)代碼301(永久重定向)、302(暫時(shí)重定向)等.具體來(lái)說(shuō),可以通過(guò)requests請(qǐng)求得到的response對(duì)象中的url、status_code兩個(gè)屬性來(lái)判斷.當(dāng)...
道孚縣齒形: ______ 爬蟲(chóng)通常指的是網(wǎng)絡(luò)爬蟲(chóng),就是一種按照一定的規(guī)則,自動(dòng)地抓取萬(wàn)維網(wǎng)信息的程序或者腳本.因?yàn)閜ython的腳本特性,python易于配置,對(duì)字符的處理也非常靈活,加上...
道孚縣齒形: ______ Python爬蟲(chóng)是大家都比較感興趣的一個(gè)應(yīng)用領(lǐng)域,對(duì)于很多人來(lái)說(shuō)可能專(zhuān)業(yè)從事爬蟲(chóng)覺(jué)得不太好,但是卻又想要通過(guò)爬蟲(chóng)掙點(diǎn)錢(qián),小編告訴大家這幾種方法,讓你輕松發(fā)揮自己的Python技能.Python爬蟲(chóng)如何賺錢(qián)?可以通過(guò)以下三種方法:1、...
道孚縣齒形: ______ 從爬蟲(chóng)必要的幾個(gè)基本需求來(lái)講: 1.抓取 py的urllib不一定去用,但是要學(xué),如果還沒(méi)用過(guò)的話(huà). 比較好的替代品有requests等第三方更人性化、成熟的庫(kù),如果pyer不了解各種庫(kù),那就白學(xué)了. 抓取最基本就是拉網(wǎng)頁(yè)回來(lái). 如果深入做下...