導航:首頁 > 編程語言 > pythonhttps登錄

pythonhttps登錄

發布時間:2023-09-25 02:23:18

python環境設置ssl

爬取數據需要用python請求網路數據, https的加密實現依賴openssl

利用源碼直接安裝

安裝zlib庫

安裝openssl到 /usr/local/openssl 目錄,安裝之後,編譯

安裝結束後執行以下命令

進入/usr/local目錄下,執行以下命令

在/etc/ld.so.conf文件的最後面,添加如下內容:/usr/local/openssl/lib
然後執行以下命令

添加OPESSL的環境變數,在etc/的profile的最後一行,添加:

查看openssl版本

使用源碼按過於繁瑣,如果對軟體版本沒有特殊要求的話可以使用yum命令安裝和更新,既方便又快捷

先看下ssl有沒有被引入

報錯是因為python沒有帶--with-ssl 選項編譯
修改Setup.dist文件 (把Setup這個不帶後綴的也一起改了)

修改結果如下:(去掉最後4行的注釋)

切到python文件夾

完成之後

沒有報錯, 大功告成

參考鏈接
ImportError: No mole named _ssl
linux上安裝Openssl步驟詳解

⑵ windows下怎麼使用python

首先,在Windows系統上安裝 Python,然後才能運行,可以按如下步驟進行。
首先,登錄 https://www.python.org/downloads/ 頁面,可以在該頁面上看到兩類下載鏈接,分別是 Python 3.x 和 Python 2.x 版本。因為 Python 在同時維護著 3.x 和 2.x 兩個版本,這樣既可讓早期項目繼續使用 Python 2.x,也可讓新的項目使用 Python 3.x 。
在該頁面下方的「Looking for a specific release?」列表中選擇「Python 3.6.x」,可以看到如下圖所示的下載列表。
在下載列表中,以「Windows x86-64」開頭的鏈接才是 64 位的 Python 安裝程序;以「Windows x86」開頭的鏈接是 32 位的 Python 安裝程序。
推薦學習《python教程》

根據 Windows 系統平台下載合適的安裝程序(64 位的平台下載 64 位的安裝程序,32 位的平台下載 32 位的安裝程序),本教程以 64 位的安裝程序為例,下載完成後得到 python-3.6.x-amd64.exe 安裝文件。
雙擊 python-3.6.x-amd64.exe 文件,系統將會開啟 Python 安裝向導,如下圖所示。
勾選「Add Python 3.6 to PATH」 復選框,可以將 Python 命令工具所在目錄添加到系統 Path 環境變數中;單擊「Customize installation」,可以在安裝時指定自定義的安裝路徑。單擊該選項即可開始安裝。
在接下來的安裝界面中只要改變 Python 的安裝路徑(建議安裝在指定盤符的根路徑下,比如安裝在 D:Python 目錄下),其他地方使用默認選項即可。
安裝完成後,啟動 Windows 的命令行程序,在命令行窗口中輸入「python」命令(字母 p 是小寫的),如果出現 Python 提示符(>>>),就說明安裝成功了,如圖下圖 所示。
使用 python 命令啟動的就是 Python 的互動式解釋器,如果要退出互動式解釋器,則可按「Ctrl+Z」快捷鍵或使用 exit() 命令。
需要額外說明的是,在 Windows 的「開始」菜單中,也可找到 Python 3.x(或者 Python 2.x)的菜單組,在這些菜單組中可找到 Python 提供的 IDLE 工具,如下圖所示,該工具是一個簡易開發環境,提供了簡易的 Python 編輯工具,編輯完成後按 F5 鍵即可運行 Python 程序。

⑶ python請求https怎麼搞

import requests

response=requests.get(httpsUrl,verify=False)

⑷ Python 爬取https的登錄界面,怎麼爬取成功,謝謝

之前寫的一直沒成功,原因是用的不是HTTPS相關的函數。這次仔細研究了一下,有幾個需要注意的點,一個是POST模擬登陸的時候,header中的cookie值,不同的網站應該會有不同的要求;另一個是GET頁面的時候,是需要加上POST得到的response中的set-cookie的。這樣才能利用登陸的成功。

寫完POST和GET頁面後,順便寫了個簡單的命令行實現。

importhttplib,urllib
importurllib2
importcookielib
importsys

file_text="build_change.txt"
resultTable=dict()
host='buuuuuuu.knight.com'

defLogin(username,password,csrf=''):
url='/login/'
values={
'username':username,
'password':password,
'next':'',
'csrfmiddlewaretoken':csrf,
}

headers={
'User-Agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/35.0.1916.114Safari/537.36',
'Content-Type':'application/x-www-form-urlencoded',
'Connection':'keep-alive',
'Cookie':'csrftoken=%s'%csrf,
'Referer':'https://buuuuuuu.knight.com/login/',
'Origin':'https://buuuuuuu.knight.com',
'Content-Type':'application/x-www-form-urlencoded',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
}
values=urllib.urlencode(values)
conn=httplib.HTTPSConnection(host,443)
conn.request("POST",url,values,headers)
response=conn.getresponse()
print'Login:',response.status,response.reason
'''
hdata=response.getheaders()
foriinxrange(len(hdata)):
forjinxrange(len(hdata[i])):
printhdata[i][j],
print
'''
returnresponse.getheader("set-cookie")


defGetHtml(_url,cookie):
get_headers={
'Host':'xxxxx.knight.com',
'Connection':'keep-alive',
'Cache-Control':'max-age=0',
'Cookie':cookie,
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'User-Agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/35.0.1916.114Safari/537.36',
'Accept-Language':'zh-CN,zh;q=0.8,en;q=0.6',
}
conn=httplib.HTTPSConnection(host)
conn.request("GET",_url,None,get_headers)
res2=conn.getresponse()
print"Get%s:"%_url,res2.status,res2.reason
'''
hdata1=res2.getheaders()
foriinxrange(len(hdata1)):
forjinxrange(len(hdata1[i])):
printhdata1[i][j],
print
'''
data=res2.read()
fp=open("build_change.txt","w")
fp.write(data)
fp.close()


defParseHtml():
fp=open(file_text,"r")
content=fp.readline()
_pos=0
whilecontent:
ifcontent.find("class="change-body"")>=0:
topic=content.split(">")
resultTable[_pos]=topic[1]
whilecontent:
content=fp.readline()
resultTable[_pos]=resultTable[_pos]+content
ifcontent.find("</div>")>=0:
_pos=_pos+1
break
content=fp.readline()
fp.close()
print"Parsehtmlsuccess."


defGenerateResultTxt():
f=open("build_change_result.txt","w")
forminresultTable.keys():
f.write("------------------------------------------------------------------------------------------- ")
f.write(resultTable[m])
f.close()
print"Generateresultsuccess:build_change_result.txt."
defHelp():
print'-h:help'
print'-u:username(must)'
print'-p:password(must)'
print'-c:csrftoken(optional)'
print'-s:sandboxbuildid(must)'
print'Forexample:'
print'[1]pythonBuildChange.py-h'
print'[2]pythonBuildChang.py-uu-pp-ss1s2'
print'[3]pythonBuildChang.py-uu-pp-cc-ss1s2'


defParseParam(com):
length=len(com)
username=""
password=""
csrf=""
sid1=""
sid2=""
iflength==2orlength==8orlength==10:
ifcom[1]=='-h':
Help()
foriinrange(1,length):
ifcom[i]=='-u'andi<(length-1):
username=com[i+1]
i+=1
elifcom[i]=='-p'andi<(length-1):
password=com[i+1]
i+=1
elifcom[i]=='-c'andi<(length-1):
csrf=com[i+1]
i+=1
elifcom[i]=='-s'andi<(length-2):
sid1=com[i+1]
sid2=com[i+2]
i+=2
ifusername==""orpassword==""orsid1==""orsid2=="":
print'[Error]Parametererror!'
print'[Error]Youcanuse"pythonBuildChange.py-h"toseehowcanusethisscript.'
else:
ifcsrf=="":
cookie=Login(username,password)
else:
cookie=Login(username,password,csrf)
_url="//changelog//between//%s//and//%s/"%(sid1,sid2)
GetHtml(_url,cookie)
ParseHtml()
GenerateResultTxt()

#C:Python27python.exeC:UsersknightDesktopuildBuildChange.py-uxux-pKKKKKKKK-s18594091858525

if__name__=="__main__":
ParseParam(sys.argv)

⑸ python3中使用urllib進行https請求

剛入門python學習網路爬蟲基礎,我使用的python版本是python3.6.4,學習的教程參考 Python爬蟲入門教程

python3.6的版本已經沒有urllib2這個庫了,所以我也不需要糾空帶結urllib和urllib2的區別和應用場景

參考這篇官方文檔 HOWTO Fetch Internet Resources Using The urllib Package 。關於http(s)請求一般就get和post兩種方式較為常用衡並,所以寫了以下兩個小demo,url鏈接隨便找的,具體場景具體變化,可參考注釋中的基本思路

POST請求:

GET請求:

注意,
使用ssl創建未經驗證的上下文,在urlopen中需傳入上下文參數
urllib.request.urlopen(full_url, context=context)
這是Python 升級到 2.7.9 之後引入的一個新特性,所以在使用urlopen打開https鏈接會遇到如下報錯:
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)
所以,當使用urllib.urlopen打開一個 https 鏈接時,需要先驗證一次 SSL 證書
context = ssl._create_unverified_context()
或者或者導入ssl時關閉斗攔蘆證書驗證
ssl._create_default_https_context =ssl._create_unverified_context

⑹ python怎麼獲取需要登陸的介面的數據

使用Python做爬蟲是很廣泛的應用場景,那就涉及到了Python是如何獲取介面數據的呢?Python擁有很多很強大的類庫,使用urllib即可輕松獲取介面返回的數據。
...展開
工具原料Python開發工具url介面,用於請求獲取數據
方法/步驟分步閱讀
1
/4
首先新建一個py文件,導入所需的類庫,urllib,json等。
2
/4
聲明api的url地址,和構造請求頭。
3
/4
使用urlopen方法發起請求並獲取返回的數據。
4
/4
最後就是對返回字元串的處理了。比如字元串的截取,字元串的轉換成json對象,轉換成欄位,再獲取對應key的值。
使用Python3實現HTTP get方法。使用聚合數據的應用編程介面,你可以調用小發貓AI寫作API。這是一個免費的應用程序介面,先上代碼,詳細說明寫在後面:

1
2
3
4
5
6
7
8
9
10
11
12
import requests
import time
import re
se = requests.session()

if __name__ == '__main__':
Post_url = "http://api-ok.xiaofamao.com/api.php?json=0&v=1&key=xxxxxx" #自己想辦法弄到key
Post_data = {
'wenzhang': '床前明月光,疑是地上霜。'
}
Text = se.post(Post_url, data=Post_data).text.replace("'", '"').replace('/ ', '/')
print(Text)

首先,什麼是原料葯?應用編程介面的全稱也稱為應用編程介面。它簡稱為應用編程介面。當我第一次接觸介面調用時,我不知道寫什麼,因為我看了整個項目。這個項目是由龍卷風寫的。看了半天龍卷風後,我發現我走錯了方向。我只是直接看著界面,因為沒有人告訴我項目的整個過程。我不得不強迫自己去看它。我所要做的就是找到程序的主入口,然後根據函數一步一步地調用它。
當我編寫介面時,因為我必須配合後台編寫和瀏覽器訪問,每次訪問只需要傳入相應的參數來調用相應的介面。界面可以由他人編寫,也可以由合作公司提供。當然,合作公司提供的不是免費的。現在基本上,如果我不訪問它一次,它只收費幾美分。當你聽到這些,不要低估這幾分。有時候如果你打了幾百萬次電話,會花很多錢。有些人認為,我們不能按月付款嗎?對不起,我不知道。總之,我們一個接一個地計算,因為第一次,我認為我買的那些直接買了我們想要的所有數據,把它們保存在本地資料庫中,當我使用它們時,直接從我自己的資料庫中轉移它們。後來,我發現我想得太多了,偽原創API。
該介面調用由python的請求庫訪問,它基本上是一個get或post請求。有些介面是加密的,然後我們必須用另一方提供給我們的公鑰加密或解密,然後用相應的參數訪問。我們想要的數據基本上是在請求後返回的結果中以json格式解析的。因此,在請求之後,我們可以用請求提供的json函數來解析它,然後提取數據以一次訪問一個數據。
沒錯,介面調用就是這么簡單,但是有了後台編寫,我才發現請求庫現在有多強大,只要它是http或https,我很高興我在一周內讀完了請求和bs4,我真的不打電話給爬蟲工程師,如果我是爬蟲的時候不學習請求,你能用scrapy寫4=dead來寫它嗎?Urllib的單詞基本上被刪除了。如果你有要求,為什麼要用這個?

⑺ 怎樣用Python設計一個爬蟲模擬登陸知乎

先來說一下,爬蟲模擬登陸的基本原理吧,我也是剛開始接觸對於一些深層次的東西也不是掌握的很清楚。首先比較重要的一個概念就是cookie,我們都知道HTTP是一種無狀態的協議,也就是說當一個瀏覽器客戶端向伺服器提交一個request,伺服器回應一個response後,他們之間的聯系就中斷了。這樣就導致了這個客戶端在向伺服器發送請求時,伺服器無法判別這兩個客戶端是不是一個了。握搭這樣肯定是不行的。這時cookie的作用就體現出來了。當客戶端向伺服器發送一個請求後,伺服器會給它分配一個標識(cookie),並保存到客戶端本地,當下次該客戶端再次發送請求時連帶著cookie一並發送給伺服器,伺服器一看到cookie,啊原來是你呀,這是你的東西,拿走吧。所以一個爬蟲模擬登陸就是要要做到模擬一個瀏覽器客戶端的行為,首先將你的基本登錄信息發送給指定的url,伺服器驗證成功後會返回一個cookie,我們就利用這個cookie進行後續的爬取工作就行了。
我這里抓包用的就是chrome的開發者工具,不過你也可以使用Fiddler、Firebug等都可以,只不過作為一名前端er對chrome有一種特殊的喜愛之情。准備好工具接下來就要打開知乎的登陸頁面並查看https://www.hu.com/#signin 我們可以很容易發現這個請求 發送的就是登錄信息,當然我使用手機登陸的 用郵件登陸的是最後結尾是email

所以我們只需要向這個地址post數據陸或就行了

phone_num 登錄名
password 密碼
captcha_type 驗證碼類型(這個參數著這里並沒有實質作用)
rember_me 記住密碼
_xsrf 一個隱藏的表單元素 知乎用來防禦CSRF的(段悉拿關於CSRF請打開這里) 我發現這個值是固定所以就在這里直接寫死了 若果有興趣的同學可以寫一個正則表達式 把這部分的值提取出來 這樣更嚴謹一些。

# -*- coding:utf-8 -*-
import urllib2
import urllib
import cookielib
posturl = 'https://www.hu.com/login/phone_num'
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/52.0.2743.116 Safari/537.36',
'Referer':'https://www.hu.com/'
}
value = {
'password':'*****************',
'remember_me':True,
'phone_num':'*******************',
'_xsrf':'**********************'
}
data=urllib.urlencode(value)
#初始化一個CookieJar來處理Cookie
cookieJar=cookielib.CookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cookieJar)
#實例化一個全局opener
opener=urllib2.build_opener(cookie_support)
request = urllib2.Request(posturl, data, headers)
result=opener.open(request)
print result.read()

當你看到伺服器返回這個信息的時候就說明你登陸成功了
{"r":0,
"msg": "\u767b\u5f55\u6210\u529f"
}
#翻譯過來就是 「登陸成功」 四個大字
然後你就可以用這個身份去抓取知乎上的頁面了
page=opener.open("https://www.hu.com/people/yu-yi-56-70")
content = page.read().decode('utf-8')
print(content)

這段代碼 就是通過實例化一個opener對象保存成功登陸後的cookie信息,然後再通過這個opener帶著這個cookie去訪問伺服器上關於這個身份的完整頁面。

⑻ python爬蟲模擬登錄是什麼意思

有些網站需要登錄後才能爬取所需要的信息,此時可以設計爬蟲進行模擬登錄,原理是利用瀏覽器cookie。

一、瀏覽器訪問伺服器的過程:
(1)瀏覽器(客戶端)向Web伺服器發出一個HTTP請求(Http request);
(2)Web伺服器收到請求,發回響應信息(Http Response);
(3)瀏覽器解析內容呈現給用戶。

二、利用Fiddler查看瀏覽器行為信息:

Http請求消息:

(1)起始行:包括請求方法、請求的資源、HTTP協議的版本號

這里GET請求沒有消息主體,因此消息頭後的空白行中沒有其他數據。

(2)消息頭:包含各種屬性

(3)消息頭結束後的空白行

(4)可選的消息體:包含數據

Http響應消息:

(1)起始行:包括HTTP協議版本,http狀態碼和狀態

(2)消息頭:包含各種屬性

(3)消息體:包含數據


可以發現,信息里不僅有帳號(email)和密碼(password),其實還有_xsrf(具體作用往後看)和remember_me(登錄界面的「記住我」)兩個值。

那麼,在python爬蟲中將這些信息同樣發送,就可以模擬登錄。

在發送的信息里出現了一個項:_xsrf,值為

這個項其實是在訪問知乎登錄網頁https://www.hu.com/#signin時,網頁發送過來的信息,在瀏覽器源碼中可見:

所以需要先從登錄網址https://www.hu.com/#signin獲取這個_xsrf的值,

並連同帳號、密碼等信息再POST到真正接收請求的http://www.hu.com/login/email網址。

(2)獲取_xsrf的值:
爬取登錄網址https://www.hu.com/#signin,從內容中獲取_xsrf的值。
正則表達式。

(3)發送請求:
xsrf = 獲取的_xsrf的值
data = {"email":"xxx","password":"xxx","_xsrf":xsrf}
login = s.post(loginURL, data = data, headers = headers)
loginURL:是真正POST到的網址,不一定等同於登錄頁面的網址;

(4)爬取登錄後的網頁:
response = s.get(getURL, cookies = login.cookies, headers = headers)
getURL:要爬取的登陸後的網頁;
login.cookies:登陸時獲取的cookie信息,存儲在login中。

(5)輸出內容:
print response.content

五、具體代碼:

[python]view plain

閱讀全文

與pythonhttps登錄相關的資料

熱點內容
dedecmsphp文件修改 瀏覽:533
貸款解壓省內都可以辦理嗎 瀏覽:467
思科伺服器如何發布www任務 瀏覽:682
怎麼在蘋果裡面下王者安卓版的 瀏覽:686
c語言改編程序沒保存 瀏覽:437
msdos編譯教程 瀏覽:978
怎麼去文件夾後綴 瀏覽:445
粉筆app筆試真題在哪裡 瀏覽:108
晉江小說閱讀app怎麼注冊填寫驗證 瀏覽:157
安卓手機如何將手機app安裝到u盤 瀏覽:520
指針編譯在哪運行 瀏覽:810
dnf大槍壓縮補丁 瀏覽:355
linux命令env 瀏覽:914
浙江app遙控鎖哪裡有 瀏覽:708
qq別人加密了怎樣才能給他解開 瀏覽:253
程序員離職開店 瀏覽:770
excel不能對多重區域使用此命令 瀏覽:969
手機影像演算法盤點 瀏覽:729
反編譯為什麼不能得到源代碼 瀏覽:926
php最流行的框架 瀏覽:191