首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >发送post请求时自动生成cookie

发送post请求时自动生成cookie
EN

Stack Overflow用户
提问于 2022-06-10 08:24:56
回答 2查看 91关注 0票数 -1

我试图将Http Post请求发送到具有以下标题的网站:

代码语言:javascript
复制
headers = {
    "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
    "cookie": "__gpi=UID=00000625243f2b12:T=1654153135:RT=1654342443:S=ALNI_MbdFxSgua2dONohDTz9bEGks8vnoQ; __gads=ID=05dae5d77dbc463f:T=1654153135:S=ALNI_MbLIzKIHhP022gtr7bRBqu9PSxNtQ; PHPSESSID=8a932c5bbe4d667513dfdc3a0051ed37",
    "origin": "https://www.dcode.fr",
    "pragma": "no-cache",
    "referer": "https://www.dcode.fr/cipher-identifier",
    "sec-fetch-site": "same-origin",
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36 OPR/87.0.4390.45",
    "x-requested-with": "XMLHttpRequest"
    }

一开始它运行得很好。但过了一段时间就停止工作了我想是因为饼干过期了。

错误输出:

代码语言:javascript
复制
{"captcha":"<script>$.getScript('https:\/\/www.google.com\/recaptcha\/api.js').done(function( script, textStatus ) {\n  $('#captcha').addClass('g-recaptcha').attr({'data-sitekey':'6LeoCVQaAAAAALADLNorGItVJxP40YUjD1Q3S0zp','data-callback':'recaptcha_callback'});\n });\n<\/script>\n<div id='captcha'><\/div>"}

预期产出:

代码语言:javascript
复制
{"caption":"dCode's analyzer suggests to investigate:","results":{"<a href=\"\/rot-13-cipher\" target=\"_blank\">ROT-13 Cipher<\/a>":"\u25a0\u25a0","<a href=\"\/base-58-cipher\" target=\"_blank\">Base 58<\/a>":"\u25a0","<a href=\"\/playfair-cipher\" target=\"_blank\">PlayFair Cipher<\/a>":"\u25a0","<a href=\"\/base-64-encoding\" target=\"_blank\">Base64 Coding<\/a>":"\u25a0","<a href=\"\/substitution-cipher\" target=\"_blank\">Substitution Cipher<\/a>":"\u25aa","<a href=\"\/rot-cipher\" target=\"_blank\">ROT Cipher<\/a>":"\u25aa","<a href=\"\/caesar-cipher\" target=\"_blank\">Caesar Cipher<\/a>":"\u25aa","<a href=\"\/shift-cipher\" target=\"_blank\">Shift Cipher<\/a>":"\u25aa","<a href=\"\/hill-cipher\" target=\"_blank\">Hill Cipher<\/a>":"\u25aa","<a href=\"\/affine-cipher\" target=\"_blank\">Affine Cipher<\/a>":"\u25aa","<a href=\"\/keyboard-change-cipher\" target=\"_blank\">Keyboard Change Cipher<\/a>":"\u25ab","<a href=\"\/vigenere-cipher\" target=\"_blank\">Vigenere Cipher<\/a>":"\u25ab","<a href=\"\/homophonic-cipher\" target=\"_blank\">Homophonic Cipher<\/a>":"\u25ab","<a href=\"\/autoclave-cipher\" target=\"_blank\">Autoclave Cipher<\/a>":"\u25ab","<a href=\"\/beaufort-cipher\" target=\"_blank\">Beaufort Cipher<\/a>":"\u25ab","<a href=\"\/burrows-wheeler-transform\" target=\"_blank\">Burrows\u2013Wheeler Transform<\/a>":"\u25ab"}

如果我使用浏览器的开发工具复制捕获请求的cookie并将其粘贴到代码中,那么它将在短时间内再次工作。

我怎么能通过这一重验证码的错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-12 21:47:31

该网站或api正在运行某种js身份验证,以阻止任何不是浏览器的东西来绕过它,您有两个选项。

要么反转js,了解cookie是如何构造的,然后在python中复制它们(这非常困难,可能需要几周的反向工程)

或者,您可以创建一个selenium实例,该实例访问站点并等待cookie的出现,然后简单地将它们传递给请求,每次显示captcha时都必须这样做(这是比较容易的选项,但这会使脚本更慢)

票数 1
EN

Stack Overflow用户

发布于 2022-06-12 08:39:50

这不一定是因为cookie过期了,看看您的输出,它是一个recaptcha。你得先解决卡普查。

此外,确保您正在更改请求的默认用户代理。如果您没有使用requests.Session,可以考虑使用它,如果可能的话,也可以使用selenium

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72571220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档