当前位置: 首页 > 知识库问答 >
问题:

当使用requests.session登录www.researchgate.net时,我得到了一个“403禁止”,警告说“您的浏览器不接受cookie。“

成浩漫
2023-03-14

我正在用Python为https://www.reseachgate.net编写一个网络爬虫程序。当我尝试使用requests.session登录时,我得到了一个“403禁止”页面,警告说“您的浏览器不接受cookie。使用此站点需要cookie。”如何解决这个问题?

import requests
from bs4 import BeautifulSoupter 

headers = {
            'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:32.0) Gecko/20100101 Firefox/32.0'
        }
session = requests.Session()

params = {'login': '######@std.uestc.edu.cn', 'password': '#######'}
s = session.post("https://www.researchgate.net/application.Login.html", data = params, headers = headers)
print s.cookies.get_dict()
print s.text
s = session.get("https://www.researchgate.net/home")
print BeautifulSoup(s.text).title

以下是我得到的:

 <div class="error-page">
     <h1>
         403 Forbidden            </h1>

     <h3>Your browser doesn't accept cookies. Cookies are required to use this site.</h3>

共有1个答案

曹子平
2023-03-14

原来我在登录表单中漏掉了一些字段。

以下是我更新的代码:

import requests
from bs4 import BeautifulSoup

session = requests.Session()
loginpage = session.get("https://www.researchgate.net/application.Login.html")
request_token = BeautifulSoup(loginpage.text).form.find("input",{"name":"request_token"}).attrs["value"]
print request_token
params = {"request_token":request_token,
          "invalidPasswordCount":"0",
          'login': 'my_email', 
          'password': 'my_password',
          "setLoginCookie":"yes"
          }
session.post("https://www.researchgate.net/application.Login.html", data = params)
s = session.get("https://www.researchgate.net/search.Search.html?type=researcher&query=zhang")
print BeautifulSoup(s.text).title
 类似资料:
  • 问题内容: 这通常是由XML声明前的空白引起的,但是它可以是任何文本,例如破折号或任何字符。我说这通常是由空白引起的,因为人们认为空白始终是可忽略的,但事实并非如此。 经常发生的另一件事是UTF-8 BOM(字节顺序标记),如果将文档作为字符流传递给XML解析器而不是字节流,则在将XML声明视为空白之前允许我正在编写一个小型Java程序,以获取给定Google搜索字词的结果数量。出于某种原因,在J

  • 我正在编写一个小Java程序,以获取给定谷歌搜索词的结果量。出于某种原因,在Java中我得到了403,但我在web浏览器中得到了正确的结果。代码: 和错误: 它为什么这样做?

  • 问题内容: 执行登录功能后,“在树中查看结果”中的响应数据显示如下: 您的浏览器似乎禁用了JavaScript。 您必须在浏览器中启用JavaScript才能使用本网站的功能。 注意:已启用Firefox中的JavaScript,并且我已使用“测试脚本记录器”来记录浏览器会话。 问题答案: 从JMeter项目主页 JMeter不是浏览器。 就Web服务和远程服务而言,JMeter看起来像一个浏览器

  • 我有一个Spring Boot应用程序,使用Spring Security和Keyclope作为IDP。 Keyclope在以下位置可用https://auth.example.com,具有一个具有客户端backo核心的领域backo和一个配置了所需角色的testuser。 如果我配置本地应用程序,请使用 一切正常。 如果我将其部署到我的开发环境中https://backo.example.com

  • 问题内容: 试图找到一种方法,使每次连接使用Selenium的连接使用“不可信”证书时,禁止Firefox发出警告。我认为,最有效的解决方案是设置浏览器首选项之一。 非常感谢!任何建议将不胜感激! 问题答案: 我发现有关在Selenium for Java中启用此功能的评论 。还有一个关于同一问题的StackOverflow问题,对于Java For Python,这也是我想要的目标语言,我通过浏

  • 我已经用Apache2.4和SSL启动了一个Windows服务器。当我连接到https://www.example.com点击绿锁,我有消息: 您与网站的连接使用过时的加密技术进行加密 有什么建议吗? 下面是: