Python 使用 python 登录到我的 cpanel
Posted
技术标签:
【中文标题】Python 使用 python 登录到我的 cpanel【英文标题】:Python login to my cpanel with python 【发布时间】:2014-10-16 16:12:12 【问题描述】:我想用 python 创建一个脚本来测试我的组合(用户名和密码)是否正确,但我总是收到 401 HTTP 响应,所以我认为脚本无法提交登录数据。 (cpanel 登录不是传统的登录面板,所以我将使用演示登录面板作为我们的 example-site.com):
import urllib, urllib2, os, sys, re
site = 'http://cpanel.demo.cpanel.net/'
username = 'demo'
password = 'demo'
headers =
"User-Agent" : "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0",
"Accept" : "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding" : "gzip, deflate",
"Accept-Charset" : "ISO-8859-1,utf-8;q=0.7,*;q=0.7"
data = [
("user",username),
("pass",password),
("testcookie",1),
("submit","Log In"),
("redirect_to",'http://cpanel.demo.cpanel.net/'),
("rememberme","forever")]
req = urllib2.Request(site, urllib.urlencode(dict(data)), dict(headers))
response = urllib2.urlopen(req)
if any('index.html' in v for v in response.headers.values()) == True :
print "Correct login"
else :
print "incorrect"
我得到这个错误:
Traceback (most recent call last):
File "C:\Python27\cp\cp4.py", line 19, in <module>
response = urllib2.urlopen(req)
File "C:\Python27\lib\urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "C:\Python27\lib\urllib2.py", line 400, in open
response = meth(req, response)
File "C:\Python27\lib\urllib2.py", line 513, in http_response
'http', request, response, code, msg, hdrs)
File "C:\Python27\lib\urllib2.py", line 438, in error
return self._call_chain(*args)
File "C:\Python27\lib\urllib2.py", line 372, in _call_chain
result = func(*args)
File "C:\Python27\lib\urllib2.py", line 521, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 401: Access Denied
有解决问题和测试登录详细信息的想法吗?
【问题讨论】:
网站应该是'http://cpanel.demo.cpanel.net/login/'
,我想。
您也可以从该目录登录,但总是得到相同的响应
您不应该发布到您看到表单的页面,您应该发布到表单的操作字段。
我认为你需要做一个 POST,而不是一个 GET。
@Carpetsmoker 这是一个帖子。当data
被传递时,urllib2 会自动切换。 Link
【参考方案1】:
考虑使用Requests,这是一个更加用户友好的 Python HTTP 客户端库。
import requests
url = 'http://cpanel.demo.cpanel.net/login/'
username = 'demo'
password = 'demo'
headers =
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0',
data =
'user': username,
'pass': password,
response = requests.post(url, headers=headers, data=data)
if response.status_code == 200:
print "Successfully logged in as username".format(username=username)
else:
print "Login unsuccessful: HTTP/status_code".format(status_code=response.status_code)
已编辑以检查 HTTP/200,因为如果登录不正确,CPanel 会抛出 HTTP/401。
【讨论】:
是的,它在本示例中有效,但在任何其他主机中我都会收到此错误:/Traceback (most recent call last): File "C:\Python27\cp\cp6.py", line 3, in <module> r = requests.post("http://example-ip:2082", data=logininfo) socket.error: [Errno 10054] An existing connection was forcibly closed by the remote host
我能做什么??【参考方案2】:
您需要将登录信息发布到http://cpanel.demo.cpanel.net/login/
使用请求的示例(更简单!):
import requests
logininfo = 'user':'demo', 'pass':'demo'
r = requests.post("http://cpanel.demo.cpanel.net/login/", data=logininfo)
if (r.status_code==200):
print "Correct login"
【讨论】:
以上是关于Python 使用 python 登录到我的 cpanel的主要内容,如果未能解决你的问题,请参考以下文章
尝试通过 Chromedriver 2.34、Selenium 3.8 和 Python 3.6.2 登录富国银行时出错