2

如何登录 www.###.nl/admin 并打印源代码?

我已经尝试了几件事。

这是我最近尝试使用请求的方法:

import requests

url = "http://www.###.nl/admin"
r = requests.get(url, auth=('***', '***'))
page = r.text

print(page)

这段代码只是打印出登录页面的代码。

谢谢您的帮助。

4

3 回答 3

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

在此处查看请求库的文档。

更新(如果网站使用 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

希望这可以帮助。祝你好运!

于 2013-06-24T20:05:58.427 回答
1

确定您是否需要 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.

于 2013-06-25T01:25:06.713 回答
1

我使用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()
于 2013-06-25T08:57:29.637 回答