无法登录到https站点(https://malwr.com)通过python脚本

2024-09-30 22:28:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要通过python脚本登录到malwr site 我试过使用各种模块,比如machanize modulerequest module,但是使用scrpt登录站点没有成功。在

我想创建自动化脚本,通过解析html页面从malware analysis site下载文件,但由于登录问题,我无法解析html页面的href属性来获取下载文件的链接。在

以下是我的代码:

import urllib, urllib2, cookielib

username = 'myuser'
password = 'mypassword'

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
login_data = urllib.urlencode({'username' : username, 'password' : password})
opener.open('https://malwr.com/account/login/', login_data)
resp = opener.open('https://malwr.com/analysis/MDMxMmY0NjMzNjYyNDIyNDkzZTllOGVkOTc5ZTQ5NWU/')
print resp.read()

我做错什么了吗?在


Tags: 文件脚本htmlusernamesiteloginanalysispassword
1条回答
网友
1楼 · 发布于 2024-09-30 22:28:30

要做的关键是解析表单中的csrf标记,并将其与POST参数中的username和{}一起传递到https://malwr.com/account/login/端点。在

下面是使用^{}^{}库的解决方案。在

首先,它打开一个会话,通过web抓取会话维护“保持登录”的cookie,然后从登录页面获取一个csrf令牌。下一步是发送一个POST请求来登录。然后,您可以打开“分析”页面并检索链接:

from urlparse import urljoin
from bs4 import BeautifulSoup
import requests

base_url = 'https://malwr.com/'
url = 'https://malwr.com/account/login/'
username = 'username'
password = 'password'

session = requests.Session()

# getting csrf value
response = session.get(url)
soup = BeautifulSoup(response.content)

form = soup.form
csrf = form.find('input', attrs={'name': 'csrfmiddlewaretoken'}).get('value')

# logging in
data = {
    'username': username,
    'password': password,
    'csrfmiddlewaretoken': csrf
}
session.post(url, data=data)

# getting analysis data
response = session.get('https://malwr.com/analysis/MDMxMmY0NjMzNjYyNDIyNDkzZTllOGVkOTc5ZTQ5NWU/')
soup = BeautifulSoup(response.content)

link = soup.find('section', id='file').find('table')('tr')[-1].a.get('href')
link = urljoin(base_url, link)
print link

印刷品:

^{pr2}$

相关问题 更多 >