gpt4 book ai didi

Python Web 自动化 : HTTP Requests OR Headless browser

转载 作者:可可西里 更新时间:2023-11-01 17:18:53 25 4
gpt4 key购买 nike

我对这个特定主题感到困惑,我为两个不同的网站构建了一个机器人,利用 python 的请求模块手动模拟 HTTP PoST 和 GET 请求的发送。

我实现了 socks 代理,还在我的请求中使用了用户代理以及引荐来源网址;必要时(我在这些网站上使用 burpsuite 验证了浏览器发送的实际请求)以使其看起来真实。

但是,我通过我的机器人运行的任何帐户都会被暂停。这让我想知道我做错了什么,一位 friend 建议我也许应该使用这些 headless 解决方案之一(phantomJS),我倾向于那条路线,但我仍然很困惑,想知道使用之间的区别HTTP 请求模块和使用像 phantomJS 这样的 headless 浏览器。

我不确定是否需要在这里粘贴我的源代码。只是在这个项目上寻找一些方向。感谢您花时间阅读这么长的文字墙:)

最佳答案

可能,您必须设置 cookie。

为了使您的请求更加真实,您应该设置其他 header ,例如HostReferer。但是,Cookies header 每次都应该更改。您可以通过这种方式获取它们:

from requests import Session

with Session() as session:
# Send request to get cookies.
response = session.get('your_url', headers=your_headers, proxies=proxies) # eventually add params keyword
cookies = response.cookies.get_dict()

response = session.get('your_url', headers=your_headers, cookies=cookies, proxy=proxy)

或者,该站点可能正在以某种方式扫描机器人。

在这种情况下,您可以尝试使用 time.sleep() 在请求之间添加延迟。您可以在浏览器的开发工具中查看计时。或者,您可以模拟所有您在浏览器上连接到站点时发送的请求,例如ajax 脚本 等。

根据我的经验,使用请求或使用 Selenium 网络驱动程序在检测方面没有太大区别,因为您无法访问 header ,甚至无法访问请求和响应数据。另请注意,不再支持 Phantom Js。最好改用 headless Chrome。

如果所有请求方法都不起作用,我建议使用 Selenium-wireMobilenium ,Selenium 的修改版本,允许访问请求和响应数据。

希望对您有所帮助。

关于Python Web 自动化 : HTTP Requests OR Headless browser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52267189/

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