网页无法F12,禁止调试出现debug怎么办
直接F8禁用,ctrl+F8开启调试断点
网站禁止ip访问,并且关闭了icmp回包,调试最好禁用缓存,以便实时更新
用postman单独访问首页的index的首页也是无法获取网页内容
考虑网页使用js进行跳转
实例:
比如使用postman请求https://www.phind.com/
简单来说,就是html文件中包含cookie设置和动态跳转网址的js代码,访问这个网页时js会设置cookie然后重定向到另一个网页,所以只是get这个url是不行的。
同理,如果清除cookie,在浏览器中f12,然后按f1禁用js,也会出现postman请求放回的内容
网页检查禁用 JavaScript
若要关闭 JavaScript,请:
若要打开 DevTools,请右键单击网页,然后选择“ 检查”。 或者,按 Ctrl+Shift+I (Windows、Linux) 或 Command+Option+I (macOS) 。 DevTools 随即打开。
按 Ctrl+Shift+P (Windows、Linux) 或 Command+Shift+P (macOS) 打开 命令菜单。
js格式化工具
https://coding.tools/cn/javascript-beautifier
实现抓取的过程如下:
先get之前能得到的带有js的html。
将其中的js代码正则提取出来。
将里面的atob替换为window["atob"],增加window对象,函数getURL()返回window["location"],即跳转的链接尾缀。
将这个修改后js代码执行,得到尾缀,与原URL链接,得到重定向的URL。
还有就是cookie问题,直接用requests的session处理就好。(会话保持,保持cookie)
补充:
cookie转换成字典
def convert_cookies_to_dict(cookies):
cookies = dict([l.split("=", 1) for l in cookies.split("; ")])
return cookies
## get网页
## 方式一
import requests
requests.get(url="",headers=dict_header,cookies=dict_cookie)
## 方式二
requests.request(mehod="get/post")
使用help方法可以查看函数的用法和参数类型
从浏览器f12获取get的cookie
使用函数抓换
这里的网站使用了cloudflare的反爬
解决办法。使用一个docker去处理绕过cloudflare验证
docker run -d \
--name=flaresolverr \
-p 8191:8191 \
-e LOG_LEVEL=info \
--restart unless-stopped \
ghcr.io/flaresolverr/flaresolverr:latest
把请求转发给8191端口,然后等待放回
python代码
结果,返回成功
参考链接
js反爬
https://zhuanlan.zhihu.com/p/60627685