gpt4 book ai didi

python - 使用python登录网站

转载 作者:太空宇宙 更新时间:2023-11-04 09:13:15 25 4
gpt4 key购买 nike

我正在尝试使用 python 脚本登录维基百科,但尽管遵循了说明 here ,我就是无法让它工作。

import urllib
import urllib2
import cookielib

username = 'myname'
password = 'mypassword'

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders = [("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6")]
login_data = urllib.urlencode({'wpName' : username, 'wpPassword' : password})
opener.open('http://en.wikipedia.org/w/index.php?title=Special:UserLogin', login_data)
resp = opener.open('http://en.wikipedia.org/wiki/Special:Watchlist')

我得到的只是“您尚未登录”页面。我尝试使用具有相同负面结果的脚本登录到另一个站点。我怀疑它要么与 cookie 有关,要么我在这里遗漏了一些非常简单的东西。但我就是找不到它。

最佳答案

如果您检查发送到登录 URL 的原始请求(借助 Charles Proxy 等工具),您将看到它实际上发送了 4 个参数:wpNamewpPasswordwpLoginAttemptwpLoginToken。前 3 个是静态的,您可以随时填写它们,但是第四个需要从登录页面的 HTML 中解析。除了其他 3 个之外,您还需要将解析的这个值发布到登录 URL 才能登录。

这是使用 Requests 的工作代码和 BeautifulSoup :

import requests
from bs4 import BeautifulSoup as bs


def get_login_token(raw_resp):
soup = bs(raw_resp.text, 'lxml')
token = [n.get('value', '') for n in soup.find_all('input')
if n.get('name', '') == 'wpLoginToken']
return token[0]

payload = {
'wpName': 'my_username',
'wpPassword': 'my_password',
'wpLoginAttempt': 'Log in',
#'wpLoginToken': '',
}

with requests.session() as s:
resp = s.get('http://en.wikipedia.org/w/index.php?title=Special:UserLogin')
payload['wpLoginToken'] = get_login_token(resp)

response_post = s.post('http://en.wikipedia.org/w/index.php?title=Special:UserLogin&action=submitlogin&type=login',
data=payload)
response = s.get('http://en.wikipedia.org/wiki/Special:Watchlist')

关于python - 使用python登录网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12547205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com