我最近开始学习Python,并决定开始我的第一个项目,其中包括清理我大学的网站。现在我被卡住了,因为我无法通过登录页面。基本上,我面临的问题与this问题中描述的完全相同
根据我有限的理解和@t.m.adam发布的最后一条评论,似乎我需要在登录页面上使用inspect元素,搜索第11个标记并用regex解析js代码。但我几乎迷路了,因为第11个标签看起来一点也不像十六进制字符串
我将我的代码张贴在下面以供参考:
import requests
from bs4 import BeautifulSoup
# all cookies received will be stored in the session object
s = requests.Session()
headers = {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.5',
'Content-Type': 'application/x-www-form-urlencoded',
'Origin': 'https://student.cc.uoc.gr',
'DNT': '1',
'Connection': 'keep-alive',
'Referer': 'https://student.cc.uoc.gr/login.asp?mnuID=student&autologoff=1',
'Upgrade-Insecure-Requests': '1',
}
data = {
'userName': '*****',
'pwd': '*****',
'submit1': '%C5%DF%F3%EF%E4%EF%F2',
'loginTrue': 'login',
}
# Add headers in session.
s.headers.update(headers)
page = s.get('https://student.cc.uoc.gr')
login = s.post('https://student.cc.uoc.gr/login.asp', data=data)
home_page = s.get("https://student.cc.uoc.gr/studentMain.asp")
target = s.get("https://student.cc.uoc.gr/stud_CResults.asp")
soup = BeautifulSoup(target.content,"lxml", from_encoding='utf8')
print(soup.text)
有一个aditionnal参数,它是通过在jsfuck中加载的脚本动态加载的。您需要解码该字符串。在JS中解码很简单,但需要python中的库,有this python project,但也可以在nodejs(从this)中生成一个小脚本:
然后你可以像这样使用它:
并从python脚本使用subprocess使用它,该脚本的值不带
eval(...)
附件假设您已将
unjsfuck.js
上一个文件保存在同一位置,那么以下脚本应该可以工作:如果仍然失败,您可能需要像脚本中建议的那样添加一些标题
这个解决方案不是很理想,因为它依赖于外部脚本(nodejs或其他jsfuck解码器)。按照t.m.adam的建议使用硒将是一个很好的解决方案
相关问题 更多 >
编程相关推荐