如何登录 www.###.nl/admin 并打印源代码?
我已经尝试了几件事。
这是我最近尝试使用请求的方法:
import requests
url = "http://www.###.nl/admin"
r = requests.get(url, auth=('***', '***'))
page = r.text
print(page)
这段代码只是打印出登录页面的代码。
谢谢您的帮助。
如何登录 www.###.nl/admin 并打印源代码?
我已经尝试了几件事。
这是我最近尝试使用请求的方法:
import requests
url = "http://www.###.nl/admin"
r = requests.get(url, auth=('***', '***'))
page = r.text
print(page)
这段代码只是打印出登录页面的代码。
谢谢您的帮助。
检查此页面的来源,并确定正在提交的表单元素(您可以为此目的使用 Chrome 开发人员工具)。然后,您可以找到input
元素并确定所需的name
属性。
一个例子(未经测试):
import requests
payload = {
'username': 'USERNAME',
'password': 'PASSWORD'
}
url = 'http://www.fonexshop.nl/admin/index.php?route=common/login'
r = requests.post(url, data=payload)
print r.text
在此处查看请求库的文档。
更新(如果网站使用 cookie)
从文档 wiki,
Session 对象允许您跨请求保留某些参数。它还在从 Session 实例发出的所有请求中保留 cookie。
这是另一个例子:
from requests import session
payload = {
'action': 'login',
'username': USERNAME,
'password': PASSWORD
}
with session() as c:
c.post('http://www.fonexshop.nl/admin/index.php?route=common/login', data=payload)
request = c.get('http://www.fonexshop.nl/the/page/you/want/to/view/source/for.php')
print request.headers
print request.text
希望这可以帮助。祝你好运!
确定您是否需要 javascript 来登录或查看数据(在浏览器中禁用 javascript 并尝试手动登录)。如果需要 javascript,那么您可以使用Selenium Webdriver 之类的东西来获取包含 javascript 生成内容的页面。或者使用网络嗅探器,例如wireshark
找出浏览器发送的确切请求,然后尝试使用requests
库复制它们。
multipart/form-data
您可以从使用可以在页面的 html 源代码中看到的内容类型发送发布请求开始/admin
。基于@Amal Murali 的回答:
#!/usr/bin/env python3
import sys
from requests import session # pip install requests
credentials = dict(username='your username', password='your password')
login_url = 'http://www.fonexshop.nl/admin/index.php?route=common/login'
with session() as s:
r = s.post(login_url, files=credentials)
# print some debugging info
print("Post status: {}".format(r.status_code), file=sys.stderr)
print(r.headers, file=sys.stderr)
print("Cookies: {}".format(dict(r.cookies)), file=sys.stderr)
r = s.get('http://www.fonexshop.nl/' + 'path you actually want')
print("Get status: {}".format(r.status_code), file=sys.stderr)
print(r.headers, file=sys.stderr)
print(r.text) # print the web page source to stdout
注意:files
用于data
生成multpart/form-data
请求而不是x-www-form-urlencoded
.
我使用Splinter让它工作。
Phantomjs (headless WebKit) 被用作浏览器。您也可以使用其他浏览器,查看 Splinter 的文档。
这是工作代码:
from splinter import *
from selenium import *
username1 = '***'
password1 = '***'
browser1 = Browser('phantomjs')
browser1.visit('http://***.nl/admin')
browser1.fill('username', username1)
browser1.fill('password', password1)
browser1.click_link_by_text('Inloggen')
url1 = browser1.url
title1 = browser1.title
titlecheck1 = 'Dashboard'
print "Step 1 (***):"
if title1 == titlecheck1:
print('Succeeded')
else:
print('Failed')
browser1.quit()
print 'The source is:'
print browser1.html
browser1.quit()