首页 > 解决方案 > Python请求有效,但不是curl

问题描述

我一直很好奇是否可以通过授权绕过 cloudflare,所以我尝试从浏览器复制 curl 请求。它可能第一次工作,但现在它没有通过,但是 python 请求适用于相同的请求。为什么会这样?python请求和curl之间有什么区别,所以python有效而curl无效?特别是当 curl 看起来更可靠时,因为它是从原始浏览器请求中复制的。python和curl都在同一个ip上测试过。

Python

import requests

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0",
             "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
           "Accept-Language": "en-US,en;q=0.5", 
           "Referer": "https://www.forexfactory.com/",
           "Connection": "keep-alive", 
           "Cookie": "__cfduid=dc75ca882999b8826005b31e67e2e97401614952626; fflastvisit=1614952626; fflastactivity=0; ffsettingshash=bf5b60c8fe506ede8f5dc740baee5082; _ga=GA1.2.809893468.1614952629; fftimezone=Europe%%2FWarsaw; fftimezoneoffset=1; ffverifytimes=1; __gads=ID=eeadec198d979b6a-22f23170b3ba00fe:T=1614952629:S=ALNI_Ma6KXTRtPGIWmKWxas6bFoPhqJfmQ; ffsessionhash=3a47c580345eefec46d6816a56914d5e; ffmr_thread=1070485:1617111999; auth_user=6cffb44d013a76baf28840e3cb51b2e7c33c6678e7af4d07ba07070413296c7c:fff3e9b8833384ec6299fa4db20b9f0a5d55e442179339c19b3330f7f4653b86; fftab-history=forums%2Cindex%2Cnews; sessions_live=1; _gid=GA1.2.1436517431.1617111676; ffadon=1; __cf_bm=a98dd1621823cc9d328850faca8235d5fbe26cc8-1617114012-1800-Afnmc4MjH1Dn10P3G+E+uaTwDW3uSkwELizqckFbiMRLYBWty2tBFLpJoGcpT6RpW4a548/c/sL0DnMsugaqd18z7BxV8P6XAfi2Cophyi+EvVQTcQzc0+B6DFdQ8Kfy62Vu2mYS6P2EyZBcrfMjaNcnto1bgkumxVncvxYpuziwuhOdkcAMEhkF4x3/mfuOJQ==",
           "Upgrade-Insecure-Requests": "1", 
           "Cache-Control": "max-age=0"
          }
req = requests.get("https://www.forexfactory.com/forums", headers=headers)

请求返回正常页面,通过cloudlfare,下面是原始python请求。

b'GET /forums HTTP/1.1\r\nHost: www.forexfactory.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0\r\nAccept-Encoding: gzip, deflate\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\nConnection: keep-alive\r\nAccept-Language: en-US,en;q=0.5\r\nReferer: https://www.forexfactory.com/\r\nCookie: __cfduid=dc75ca882999b8826005b31e67e2e97401614952626; fflastvisit=1614952626; fflastactivity=0; ffsettingshash=bf5b60c8fe506ede8f5dc740baee5082; _ga=GA1.2.809893468.1614952629; fftimezone=Europe%%2FWarsaw; fftimezoneoffset=1; ffverifytimes=1; __gads=ID=eeadec198d979b6a-22f23170b3ba00fe:T=1614952629:S=ALNI_Ma6KXTRtPGIWmKWxas6bFoPhqJfmQ; ffsessionhash=3a47c580345eefec46d6816a56914d5e; ffmr_thread=1070485:1617111999; auth_user=6cffb44d013a76baf28840e3cb51b2e7c33c6678e7af4d07ba07070413296c7c:fff3e9b8833384ec6299fa4db20b9f0a5d55e442179339c19b3330f7f4653b86; fftab-history=forums%2Cindex%2Cnews; sessions_live=1; _gid=GA1.2.1436517431.1617111676; ffadon=1; __cf_bm=a98dd1621823cc9d328850faca8235d5fbe26cc8-1617114012-1800-Afnmc4MjH1Dn10P3G+E+uaTwDW3uSkwELizqckFbiMRLYBWty2tBFLpJoGcpT6RpW4a548/c/sL0DnMsugaqd18z7BxV8P6XAfi2Cophyi+EvVQTcQzc0+B6DFdQ8Kfy62Vu2mYS6P2EyZBcrfMjaNcnto1bgkumxVncvxYpuziwuhOdkcAMEhkF4x3/mfuOJQ==\r\nUpgrade-Insecure-Requests: 1\r\nCache-Control: max-age=0\r\n\r\n'

卷曲

curl 'https://www.forexfactory.com/forums' \
-H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0' \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8' \
-H 'Accept-Language: en-US,en;q=0.5' \
--compressed \
-H 'Referer: https://www.forexfactory.com/' \
-H 'Connection: keep-alive' \
-H 'Cookie: __cfduid=dc75ca882999b8826005b31e67e2e97401614952626; fflastvisit=1614952626; fflastactivity=0; ffsettingshash=bf5b60c8fe506ede8f5dc740baee5082; _ga=GA1.2.809893468.1614952629; fftimezone=Europe%%2FWarsaw; fftimezoneoffset=1; ffverifytimes=1; __gads=ID=eeadec198d979b6a-22f23170b3ba00fe:T=1614952629:S=ALNI_Ma6KXTRtPGIWmKWxas6bFoPhqJfmQ; ffsessionhash=3a47c580345eefec46d6816a56914d5e; ffmr_thread=1070485:1617111999; auth_user=6cffb44d013a76baf28840e3cb51b2e7c33c6678e7af4d07ba07070413296c7c:fff3e9b8833384ec6299fa4db20b9f0a5d55e442179339c19b3330f7f4653b86; fftab-history=forums%2Cindex%2Cnews; sessions_live=1; _gid=GA1.2.1436517431.1617111676; ffadon=1; __cf_bm=a98dd1621823cc9d328850faca8235d5fbe26cc8-1617114012-1800-Afnmc4MjH1Dn10P3G+E+uaTwDW3uSkwELizqckFbiMRLYBWty2tBFLpJoGcpT6RpW4a548/c/sL0DnMsugaqd18z7BxV8P6XAfi2Cophyi+EvVQTcQzc0+B6DFdQ8Kfy62Vu2mYS6P2EyZBcrfMjaNcnto1bgkumxVncvxYpuziwuhOdkcAMEhkF4x3/mfuOJQ==' \
-H 'Upgrade-Insecure-Requests: 1' \
-H 'Cache-Control: max-age=0'\

并 curl 返回 cloudflare 检查表。

标签: pythoncurlpython-requestscloudflare

解决方案


推荐阅读