#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests, json
import time, random
import ssl
from http import cookiejar
from bs4 import BeautifulSoup
my_headers = [
'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36',
'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'
]
def LoginZOL(username, password):
Agent = random.choice(my_headers)
headers = {
'Host': 'service.zol.com.cn',
'Referer': 'http://service.zol.com.cn/user/login.php',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Accept-Encoding': 'gzip, deflate',
'Content-Type': 'application/x-www-form-urlencoded, text/html; charset=UTF-8',
'Connection': 'keep-alive',
'Cookie': 'ip_ck=7sGF7vnyj7QuOTY0OTM1LjE1Nzg1Mzk0NTk%3D; z_pro_city=s_provice%3Dhunan%26s_city%3Dchangsha; last_userid=4u3257; zol_bind_4u3257=1; z_day=izol107429%3D4; BAIDU_SSP_lcr=http://zol.iqiyi.com.cn/?c=Api_Login&a=APILogin&act=signin&username=4u3257&check=b4f8e7b429f9bd6263322be7d9e9f7d3&backUrl=http://bbs.zol.com.cn/; zol_userid=4u3257; zol_check=164255255; zol_sid=55347437; zol_cipher=4ebc37d40e7e19a566c57b0cea2c51a4; Hm_lvt_ae5edc2bc4fc71370807f6187f0a2dd0=1578619489,1578619744,1578619766,1578619785; Adshow=0; questionnaire_pv=1578614433; lv=1578623912; vn=4; Hm_lpvt_ae5edc2bc4fc71370807f6187f0a2dd0=1578623913',
'User-Agent': Agent
}
data = {
'userid': username,
'pwd': password,
'is_auto': '1',
'act': 'signin',
'check': 'b4f8e7b429f9bd6263322be7d9e9f7d3',
'backUrl': 'http://service.zol.com.cn/user/login.php'
}
login_url = 'http://service.zol.com.cn/user/ajax/login2014/login.php'
ssion = requests.session()
ssion.cookies = cookiejar.LWPCookieJar(filename='cookies')
try:
print(ssion.cookies)
ssion.cookies.load(ignore_discard=True)
except:
print("load cookies failed")
time.sleep(0.1)
res = ssion.post(login_url, data=https://bbs.csdn.net/topics/data, headers=headers)
print(res.text)
login_code = res.json()
time.sleep(0.1)
resg = ssion.get(login_code['ext'])
print(resg.text)
print(ssion.cookies)
time.sleep(0.1)
resg = ssion.get('http://my.zol.com.cn/4u3***/settings/')
#resg = ssion.get('http://my.zol.com.cn/4u3***/settings/', headers=headers)
resg.encoding = 'GB2312'
code = resg.text
with open("code.txt","w+",encoding = 'utf-8') as f:
f.write(code)
if __name__== '__main__':
LoginZOL('4u3***','********c10ce251b9893b8d********')
我在網上查的資料,都按照要求做了啊,但是總是獲取不到'http://my.zol.com.cn/4u3***/settings/'里的內容
要么回傳

要么回傳

求高手高手高高手指點迷津謝謝
uj5u.com熱心網友回復:
只有自己占沙發了
uj5u.com熱心網友回復:
周一了,有沒有好心人上班來幫幫菜鳥uj5u.com熱心網友回復:
看懂代碼,知道原理是最重要的,資料都有時效性,不一定正確的,尤其是爬蟲這種。看錯誤提示應該是cookie的問題
這樣子,我教你自己去排查問題:
1. 你先自己去登錄一下,然后在chorme的除錯器里面把cookie摘出來;
2. 然后打開postman,自己把cookie貼到Header里面,看看能不能出來;
如果能打開的話,說明目標網站的反爬蟲策略一般,是代碼里面的小問題,自己再去反查一下代碼里面是哪個cookie丟了

uj5u.com熱心網友回復:
感謝老兄
我看了前面res = ssion.post(login_url, data=https://bbs.csdn.net/topics/data, headers=headers)時
的回傳值,res.text是
{"info":"ok","msg":"https:\/\/login.zol.com\/index.php?c=Default&a=APILogin&act=signin&username=4u3257&check=b4f8e7b429f9bd*******2be7d9e9f7d3&t=1578901505","ext":"http:\/\/zol.iqiyi.com.cn\/?c=Api_Login&a=APILogin&act=signin&username=4u3257&check=b4f8e7b429f9bd******2be7d9e9f7d3&backUrl=http:\/\/service.zol.com.cn\/user\/login.php"}
是不是代表登錄成功了?
但是獲取resg = ssion.get('http://my.zol.com.cn/4u3257/settings/',headers=headers)
就是問題描述那樣
uj5u.com熱心網友回復:
password加密了,要么你找到加密方法,要么用渲染方式登錄uj5u.com熱心網友回復:
在瀏覽器中登錄下,拿到加密后的密碼,在代碼中用。它的密碼加密像是固定的
uj5u.com熱心網友回復:
我就是拿的它加密后的密碼放代碼里的,應該不成問題,而且我也很清楚的知道它的密碼加密方法
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/102371.html
上一篇:nginx通過docker的yaml檔案一鍵安裝,報錯
下一篇:淘寶下單流程
