Здравствуйте
Столкнулся с такой проблемой, абсолютно одинаковый код на двух разных языках, который шлет абсолютно одинаковые заголовки на один и тот же сервер через один и тот же прокси, выдает разные ответы со стороны сервера. В случае с питоном он просто отдает какую то старую страницу с Etag и каждый раз одно и тоже
$xs=new Surfer("www.dell.com");
$xs->random_ua=0;
$xs->only_body=1;
$xs->setProxy("#######:65234"); // сокс прокси
$xs->setProxyType("socks5");
$xs->setProxyPass("######");
$xs->setReferer("");
$xs->ssl_always=1;
$buff=$xs->send("/support/Contents/category/eSupport-Order-support?c=us&l=en&~ck=mn",array("follow"=>1));
echo $buff=$xs->send("/support/orders/us/en/19/Order/Details?sbon=205523888",array("follow"=>1,"debug"=>1,"custom"=>array("Connection: close")));
#класс обертка для курла
class Surfer...
Данный код генерирует для последнего запроса следующие заголовки
GET /support/orders/us/en/19/Order/Details?sbon=205523888 HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 5.1; U; en)
Host: www.dell.com
Accept: */*
Accept-Encoding: deflate,identity
Referer: https://www.dell.com/support/Contents/category/eSupport-Order-support?c=us&l=en&~ck=mn
Cookie: dais-c=NchVtQmz0UBCDQ77NpbAAoa0OcMfUnzX8tx7bz4aTNEArLVCzLPaR4bDSFexnAAx;eSupId=SID=29568d7f-2cf5-432e-b720-94eb514e823a;lwp=c=us&l=en&cs=19&s=dhs;
Connection: close
Далее следует код на питоне который делает все тоже самое но вместо этого такой же запрос выдает нечто иное и всегда одно и тоже
h=urllib2.HTTPSHandler(debuglevel=1)
current_request="""User-Agent: Mozilla/5.0 (Windows NT 5.1; U; en)
Accept: */*
Accept-Encoding: *"""
current_req=current_request.split("\n")
while True:
proxy=random.choice(socks_list)
orderid=random.choice(orders)
prx=SocksiPyHandler(socks.SOCKS5, proxy[1], 65234,True, "********')
cj = cookielib.LWPCookieJar()
opener = urllib2.build_opener(h,urllib2.HTTPCookieProcessor(cj),prx)
req = urllib2.Request("https://www.dell.com/support/Contents/category/eSupport-Order-support?c=us&l=en&~ck=mn")
for el in current_req:
temp=el.split(':')
req.add_header(temp[0], temp[1].strip(' '))
response = opener.open(req)
res = response.read()
print "--------"
print "--------"
time.sleep(2)
req = urllib2.Request("https://www.dell.com/support/orders/us/en/19/Order/Details?sbon=205523888" )
for el in current_req:
temp = el.split(':')
req.add_header(temp[0], temp[1].strip(' '))
req.add_header("Referer","https://www.dell.com//support/contents/us/en/19/category/eSupport-Order-support?c=us&l=en&~ck=mn")
response = opener.open(req)
res = response.read()
данный код генерирует абсолютно идентичный запрос
но вот ответ всегда вот такой
reply: 'HTTP/1.1 200 OK\r\n'
header: Server: Apache
header: ETag: "a50bd009cc90b71337825d9fe7063dd9:1488828720"
header: Last-Modified: Mon, 06 Mar 2017 19:32:00 GMT
header: Accept-Ranges: bytes
header: Content-Length: 130762
header: Content-Type: text/html
header: Date: Thu, 18 May 2017 14:55:15 GMT
header: Connection: close
и он не должен быть таким, далее следует контент какой то страницы заглушки. Одним словом сервер должен отвечать нормальным контентом, и при одинаковом коде получается разный ответ
ПС прокси везде один и тот же, заголовки проверялись как исходящие так и те же заголовки как они уже были получены на сервере.