我试图建立一个程序,搜索车辆的有效期,但是当我做我的post请求时,什么都没有发生,我也没有得到数据
它会将结果重定向到下面的链接
谁能帮帮我吗
我目前的代码是:
import requests
my_url = 'https://www.vicroads.vic.gov.au/registration/buy-sell-or-transfer-a-vehicle/check-vehicle-registration/vehicle-registration-enquiry'
s = requests.session()
s.get(my_url)
data = {'ph_pagebody_0$phthreecolumnmaincontent_1$panel$VehicleSearch$vehicle-type' : 'car/truck' ,
'ph_pagebody_0$phthreecolumnmaincontent_1$panel$VehicleSearch$vehicle-identifier-type' : 'registration number' ,
'ph_pagebody_0$phthreecolumnmaincontent_1$panel$VehicleSearch$RegistrationNumberCar$RegistrationNumber_CtrlHolderDivShown' : 'abc123'
}
result = requests.post(my_url, data = data)
print(result)
长话短说:CORS策略:请求的资源上不存在“访问控制允许来源””标头
JS代码:
使用JavaScript在页面内执行POST请求,将得到预期的响应,该页面显示以下内容:
但是,从网站外部执行请求将获得CORS策略:无“访问控制允许源站”错误。从Python执行请求不一定会产生错误,但会导致错误的响应,这就是您得到的响应。此外,请求的数据应包括以下所有内容:
按照此处的说明获取缺少的一个(
__VIEWSTATE
):https://mkyong.com/computer-tips/how-to-view-http-headers-in-google-chrome/
好的,基本上你还没有把所有必需的
POST
参数发送到HOST
,正如你在Print-Screen
中看到的那样,有多个带值的参数现在,我们将发出
GET
请求来解析HTML
并获取所有必需的值,然后发出POST
请求现在,如果你检查了输出,你会看到它是空的,这是由于两件事
HTML
源中有一个名为monsido
的值,该值与JS
一起用于生成one-time
令牌,以便在会话期间对请求进行身份验证李>HOST
受CloudFlare
保护,其中它也需要Cookie
中的__cfduid
参数李>现在,为了缩短道路,如果您使用当前的
cookies/headers
在requests.Session()
下调用monsido,您将获得所需的令牌。所以你现在需要得到__cfduid
,我帮不了你,因为绕过已知的防火墙是非法的,比如防火墙,它实际上是为了防止这种刮擦的情况而发明的现在,回到
selenium
,您可以获得所需的输出:输出:view-online
相关问题 更多 >
编程相关推荐