python - Facebook 登录使用请求错误

标签 python request

import requests
from bs4 import BeautifulSoup

a = requests.Session()
soup = BeautifulSoup(a.get("https://www.facebook.com/").content)

payload = {
"lsd":soup.find("input",{"name":"lsd"})["value"],
"email":"my_email",
"pass":"my_password",
"persistent":"1",
"default_persistent":"1",
"timezone":"300",
"lgnrnd":soup.find("input",{"name":"lgnrnd"})["value"],
"lgndim":soup.find("input",{"name":"lgndim"})["value"],
"lgnjs":soup.find("input",{"name":"lgnjs"})["value"],
"locale":"en_US",
"qsstamp":soup.find("input",{"name":"qsstamp"})["value"]
}



soup = BeautifulSoup(a.post("https://www.facebook.com/",data = payload).content)
print([i.text for i in soup.find_all("a")])

我正在处理请求,并且已经阅读了这里的几个线程,所以我决定自己尝试一下。

我被这句话难住了。 "qsstamp":soup.find("input",{"name":"qsstamp"})["value"] 因为它返回空从而导致错误。

但是看看 chrome 开发者工具,这个 "qsstamp" 填充了我在这里缺少什么?

有效负载是 Chrome 开发工具上表单数据中显示的所有内容。那么这是怎么回事?

最佳答案

使用 Firebug 并搜索 qsstamp 会将匹配的结果定向到:Here

您可以看到:j.createHiddenInputs({qsstamp:u},v) 这意味着 qsstamp 是由 JavaScript 动态生成的。

requests 不会运行 JavaScript(因为它的作用是获取该页面的 HTML。)您可能需要使用 dryscape 之类的东西或使用类似 的模拟浏览器> Selenium

关于python - Facebook 登录使用请求错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32643288/

相关文章:

go - 如何在 Go 中制作自定义 http 客户端?

javascript - Node.js 表单数据最终去了哪里?

PHP - 拦截 POST 请求

python - 统一码编码错误 : 'ascii' codec can't encode characters in position 0-6: ordinal not in range(128)

python - 如何在Spark中调用python脚本?

python - numpy strides 只能在子数组内跨步吗?

python - VS Code Python交互窗口找不到Conda Env

python - 在 python 中的列表中查找多个字符串的最佳方法是什么?

c# - 如何使用HttpClient发送GET请求体中的内容?

node.js - 在 Node 进程退出时发送http请求