curl返回HTTP状态代码404,但页面可用

eqzww0vc  于 2022-12-04  发布在  其他
关注(0)|答案(1)|浏览(349)

我想在Linux上使用curl检查Web UI(https://something/login.html)的HTTP状态代码。

#!/bin/sh
echo $(curl -sSLk -w '%{http_code}' -o /dev/null $1 2> /dev/null)

问题是:此脚本返回404,即使查询的Web UI可通过浏览器访问。2对于其他URL,此脚本返回有效值(状态代码200)。
我还编写了一个Python脚本用于测试:

import requests
try:
   response = requests.get(
       "https://something/login.html",
       verify=False
   )   
   print(response.status_code)
except requests.ConnectionError:
   print("failed to connect")

这个Python脚本为curl返回404的同一个URL返回状态代码200。
提前感谢你的帮助。

yxyvkwin

yxyvkwin1#

他们检测到您试图执行的操作。某些站点返回“禁止”或“未授权”。
任何Web应用程序都可以返回任何HTTP状态代码。
仅仅使用一个UA是不够的。使用一个无法分析的模糊UA可能会(也可能不会)有帮助。它已经对我起作用了几次。
CloudFlare正在使用UA进行分析。他们所做的事情之一就是观察SSL握手。浏览器并不都使用相同的算法,CloudFlare会发现不同浏览器之间的特性。你必须拥有所有的cookie。许多浏览器在设置一些cookie并检查cookie后会做一个304重定向回到他们自己。如果你没有JavaScript,你可能会被阻止。
没有网址,我不能告诉你太多。有一个学习曲线,一个相当陡峭的曲线。
如果我可以使用没有JavaScript的浏览器进入一个网站,我总是可以用curl进入。
有些还是很难的,我喜欢那些把我想要的所有数据都放进JavaScript JSON对象的。

相关问题