如何登录www。###。nl / admin并打印源?
我尝试了几件事。
以下是我最近使用请求尝试的内容:
import requests
url = "http://www.###.nl/admin"
r = requests.get(url, auth=('***', '***'))
page = r.text
print(page)
此代码只打印出登录页面的代码。
感谢您的帮助。
答案 0 :(得分:1)
检查此页面的来源,并确定正在提交的表单元素(您可以使用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
查看请求库here的文档。
更新(如果网站使用Cookie)
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
希望这会有所帮助。祝你好运!
答案 1 :(得分:1)
了解您是否需要登录javascript或查看数据(在浏览器中禁用javascript并尝试手动登录)。如果需要javascript,那么您可以使用类似Selenium Webdriver的内容来获取包含javascript生成内容的页面。或者使用wireshark
之类的网络嗅探器来查找您的浏览器发送的请求,然后尝试使用requests
库复制它们。
您可以使用multipart/form-data
内容类型发送帖子请求,您可以在/admin
页面的html源代码中看到该内容类型。建立在@Amal Murali's answer:
#!/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
。
答案 2 :(得分:1)
我使用Splinter开始工作。
Phantomjs(无头WebKit)用作浏览器。您也可以使用其他浏览器,查看documentation了解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()