在没有请求模块的情况下以python 3.6登录网站

时间:2018-08-30 17:36:20

标签: python python-3.x urllib

我一直在尝试使用python 3.6登录到一个网站,但是事实证明,它比我最初预期的要困难得多。到目前为止,这是我的代码:

import urllib.request
import urllib.parse

headers = {}
headers['User-Agent'] = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36"

url = "https://www.pinterest.co.uk/login/"

data = {
    "email" : "my@email",
    "password" : "my_password"}

data = urllib.parse.urlencode(data)
data = data.encode("utf-8")

request = urllib.request.Request(url, headers = headers, data = data)
response = urllib.request.urlopen(request)
responseurl = response.geturl()

print(responseurl)

这将引发403错误(禁止),我不确定为什么添加了电子邮件,密码甚至更改了用户代理。我只是在想一些简单的东西,例如cookiejar吗?

如果可能的话,有一种方法可以不使用请求模块而做,因为这是一个挑战,我只能使用内置模块来做到这一点(但是我可以得到帮助,所以我不会作弊)< / p>

1 个答案:

答案 0 :(得分:2)

大多数站点将使用csrf令牌或其他方式来完全阻止您尝试执行的操作。一种可能的解决方法是利用selenium之类的浏览器自动化框架并通过网站的UI登录