A04 - Requests發送Post請求📄目錄1 post請求2 cookie2.1 cookie模擬登錄2.2 post請求舉例(金山翻譯)3 session(自動處理cookie)3.1 cookie池4 代理4.1 「正向代理」和「反向代理」4.2 理論上的三個分類4.3 proxies代理參數導航連結:
Post請求作用在:
登錄注冊(比get請求更安全,不會暴露信息)
傳輸大文本內容(post請求對數據長度沒有要求)
調用方式:
xxxxxxxxxx
import requests
requests.post(url, data, json, params, headers, cookie, files, ...)
data參數接收一個字典
get和post的區別:
get請求(用得比較多)
post請求(用得比較少)
get請求:直接向服務器發送請求,獲取響應內容
post請求:先給服務器一些數據,然後再獲取響應
get請求㩦帶參數:params
post請求㩦帶參數:data
❗️ 影片中舉例的人人網已停止運作
xxxxxxxxxx
import requests
url = 'https://ifanyi.iciba.com/index.php?c=trans&' # url可以精簡
word = input('請輸入你要翻譯的內容:')
headers = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Mobile Safari/537.36'
}
post_data = {
'from': 'zh' ,
'to': 'en' ,
'q': word ,
}
res = requests.post(url, data=post_data, headers=headers)
print(res.text)
❗️目前已被加密,無法正常運行
xxxxxxxxxx
requests.session() # 實例化session對象
對訪問登錄後才能訪問的頁面去進行抓包
確定登錄請求的url地址,請求方法和所需的參數
確定登錄才能訪問的頁面urlh和請求方法
利用requests.session完成代碼
例子:
res = session.post(url, data=data)
使用session訪問登錄以後的頁面
session.get(url.text)
user-agent池:短時間內多次發出請求,盡量每一次的請求都用不同的用戶代理
cookie池:每一個cookie就代表一個賬號(因為cookie包含登錄信息)
cookie跟session的區別:
cookie有有效期,session不用擔心有效期的問題
cookie數據放在客戶的瀏覽器上,session數據放在服務器上
因此,cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙,考慮到安全應使用session
session會在一定時間內保存在服務器上,考慮到減輕服務器性能方面,應當使用cookie
可以考慮將登錄信息等重要信息存放在session中,其他信息如需保留,可以放在cookie中
代理IP是一個IP,指向的是一個代理服務器
代理服務器能夠幫用戶向目標服務器轉發請求
ip地址:精確的定位
代理分為「正向代理」和「反向代理」
正向代理:
給客戶端做代理。目的是使服務器不知道客戶端的真實身份
保護自己的ip地址不會被封,要封也是封代理ip
反向代理:
給服務器做代理。目的是使客戶端不知道服務器的真實身份
正向代理保護客戶端,反向代理保守服務端
透明代理:服務器知道我們使用了代理ip,也知道真實ip
匿名代理:服務器能夠檢測到使用了代理ip,但是不知道真實ip
高匿代理:服務器既不能檢測到使用了代厘ip,也不知道真實ip
用法:
proxies的形式:字典(鍵值對的形式,語法固定,即ip地址:端口號)
xxxxxxxxxx
proxies = {
"http": "http://12.45.56.78:9527",
"https": "http://12.45.56.78:9527"
}
response = requests.get(url, proxies=proxies)
xxxxxxxxxx
import requests
url = 'https://www.baidu.com/'
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36'
}
# 構建代理字典
proxies = {
# 第一種寫法:
# 'http': 'http://12.34.56.78:1080'
# 第二種寫法:
# 'http': '12.34.56.78:1080'
}
# 當使用上述的ip時,仍然成功
# 這是因為如果代理ip無效,會自動使用本機真實ip,所以才會訪問成功
res = requests.get(url, headers=headers, proxies=proxies)
print(res.content.decode())
目的地 | 超連結 |
---|---|
首頁 | 返回主頁 |
Python學習 | Python學習 |
上一篇 | A03 - 爬蟲案例:網易雲&百度貼吧 |
下一篇 | 本篇為最後一篇 |