Php 卷曲

Php 卷曲,php,curl,login,Php,Curl,Login,我正在尝试使用下面的cURL操作登录bangme.net图片评级网站。当我检查登录表单时,ID是signin\u UserName,signin\u UserPass。这些名称是signin$UserName、signin$UserPass。该脚本似乎无法使用下划线,因为结果导致我进入一个页面,要求我尽可能地登录。我不能使用美元符号名称,因为它将其转换为变量。我注意到一些这样或类似的脚本示例显示了一些以“&”符号开头的字段,而他们想要登录的网页上的表单上没有该符号。这有什么用?如果您能提供任何帮

我正在尝试使用下面的cURL操作登录bangme.net图片评级网站。当我检查登录表单时,ID是signin\u UserName,signin\u UserPass。这些名称是signin$UserName、signin$UserPass。该脚本似乎无法使用下划线,因为结果导致我进入一个页面,要求我尽可能地登录。我不能使用美元符号名称,因为它将其转换为变量。我注意到一些这样或类似的脚本示例显示了一些以“&”符号开头的字段,而他们想要登录的网页上的表单上没有该符号。这有什么用?如果您能提供任何帮助,我们将不胜感激。多谢各位

$username = "username";
$password = "password";
$url = "http://www.bangme.net/starform.aspx";
$cookie = "cookie.txt";

$postdata = "signin_UserName=" .$username . "signin_UserPass=" .$password;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_REFERER, $url);

curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_POST, 1);
$result = curl_exec($ch);

echo $result;
curl_close($ch);
新代码:

$username=“username”;
$password=“password”;
$url=”http://www.bangme.net/signin.aspx";
$cookie=“cookie.txt”;
$post=数组(
“\u事件目标”=>”,
“\u事件参数”=>”,
“'uuu VIEWSTATE'=>”/wepdwujmzq0mju1ma0zbgbbr5fx0nvbnryb2xzumvxdwlyzvbvc3rcywnrs2v5x18wawujbgfzdhb3rvbqh2b3rlewzmguhdm90zw5vmgfkai25gomuddbmbzymwha2lgykt”,
“事件验证”=>“/wEWDgLmnpGMBwKOwMbqCwK4wb4IAv/10agEAqHH7a8KAtXfk+ULAt/Q94gCAvS2udYOAqrdhtcHAq+k5d0LAo+Au5MKApm/3+0OAQDCUYMARCMGTEOSQREGMB3P5BAVC40RTC6DBEF1G=”,
'登录$UserName'=>$UserName,
'登录$UserPass'=>$password,
'signin$Button1.x'=>42,
'签名$Button1.y'=>17
);
$postData=http\u build\u query($post);
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$URL);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_USERAGENT,“Mozilla/5.0(Windows;U;Windows NT 5.1;en-US;rv:1.8.1.6)Gecko/20070725 Firefox/2.0.0.6”);
curl_setopt($ch,CURLOPT_超时,60);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1)//已从0更改为1
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie);
curl_setopt($ch,CURLOPT_REFERER,$url);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false)//新的
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false)//新的
curl_setopt($ch,CURLOPT_POSTFIELDS,$postData);
卷曲设置($ch,卷曲设置桩,1);
$result=curl\u exec($ch);
回声$结果;
卷曲关闭($ch);

您需要使用带有美元符号的表单字段名称;您需要对
$
进行转义,这样它就不会被解释为变量,或者将它放在单引号中,这样它就只能作为纯文本进行计算

$post = 'signin$UserName=' . $username . '&signin$UserPass=' . $password;
// or
$post = "signin\$UserName=$username&signin\$UserPass=$password";
试试看,看你有没有进步。在浏览器中使用类似或的内容嗅出请求,这有助于查看提交的post数据的确切格式


另请参见

您需要使用带有美元符号的表单字段名称;您需要对
$
进行转义,这样它就不会被解释为变量,或者将它放在单引号中,这样它就只能作为纯文本进行计算

$post = 'signin$UserName=' . $username . '&signin$UserPass=' . $password;
// or
$post = "signin\$UserName=$username&signin\$UserPass=$password";
试试看,看你有没有进步。在浏览器中使用类似或的内容嗅出请求,这有助于查看提交的post数据的确切格式


另请参见

据我所知,您的两个post参数之间缺少一个符号(
&


要处理输入字段名称中的$,只需在代码中使用
\$
(转义美元符号),或将带有$符号的部分放在单引号中。(但是您必须将所有变量引用放在字符串之外,并用
将它们连接起来)

据我所知,您的两个post参数之间缺少一个符号(
&


要处理输入字段名称中的$,只需在代码中使用
\$
(转义美元符号),或将带有$符号的部分放在单引号中。(但是您必须将所有变量引用放在字符串之外,并用
将它们连接起来)

我发现这里有三点错误

A.错误的变量声明

更正

 $post = 'signin$UserName=' . $username . '&signin$UserPass=' . $password;
 http://www.bangme.net/signin.aspx
B.错误的Url

更正

 $post = 'signin$UserName=' . $username . '&signin$UserPass=' . $password;
 http://www.bangme.net/signin.aspx
C.参数不完整系统预计如下:

编辑1

$post = array(
        '__EVENTTARGET'=>"" ,
        '__EVENTARGUMENT'=>"",
        '__VIEWSTATE'=>'/wEPDwULLTEyMzUzNDExNjFkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYCBRdzaWduaW4kUmVtZW1iZXJDaGVja2JveAUOc2lnbmluJEJ1dHRvbjFA3HLFp6KEVYvii7p6PjecyYMsaw==',
        '__EVENTVALIDATION'=>'/wEWBQL/xuPVDgLCoo75CQKoiOf4DQKtwMGFDgLz0rmTDUnuxoGtW34gNpQqIpwh3OT11JJl',
        'signin$UserName'=>$username ,
        'signin$UserPass'=>$password ,
        'signin$Button1.x'=>42,
        'signin$Button1.y'=>17
        );
$postData = http_build_query($post);
编辑2

完整标题。。。只是注意到它也有饼干

POST http://www.bangme.net/signin.aspx HTTP/1.1
Host: www.bangme.net
Connection: keep-alive
Content-Length: 391
Cache-Control: max-age=0
Origin: http://www.bangme.net
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.142 Safari/535.19
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://www.bangme.net/signin.aspx
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: ASP.NET_SessionId=1jqjwt45h0gpzb452rvrcu55; __utma=178887351.705741064.1333412926.1333412926.1333412926.1; __utmc=178887351; __utmz=178887351.1333412926.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); __utmb=178887351

__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwULLTEyMzUzNDExNjFkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYCBRdzaWduaW4kUmVtZW1iZXJDaGVja2JveAUOc2lnbmluJEJ1dHRvbjFA3HLFp6KEVYvii7p6PjecyYMsaw%3D%3D&__EVENTVALIDATION=%2FwEWBQL%2FxuPVDgLCoo75CQKoiOf4DQKtwMGFDgLz0rmTDUnuxoGtW34gNpQqIpwh3OT11JJl&signin%24UserName=test&signin%24UserPass=test&signin%24Button1.x=42&signin%24Button1.y=17
编辑3

改变

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);

谢谢


:)

我发现这里有三件事不对

A.错误的变量声明

更正

 $post = 'signin$UserName=' . $username . '&signin$UserPass=' . $password;
 http://www.bangme.net/signin.aspx
B.错误的Url

更正

 $post = 'signin$UserName=' . $username . '&signin$UserPass=' . $password;
 http://www.bangme.net/signin.aspx
C.参数不完整系统预计如下:

编辑1

$post = array(
        '__EVENTTARGET'=>"" ,
        '__EVENTARGUMENT'=>"",
        '__VIEWSTATE'=>'/wEPDwULLTEyMzUzNDExNjFkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYCBRdzaWduaW4kUmVtZW1iZXJDaGVja2JveAUOc2lnbmluJEJ1dHRvbjFA3HLFp6KEVYvii7p6PjecyYMsaw==',
        '__EVENTVALIDATION'=>'/wEWBQL/xuPVDgLCoo75CQKoiOf4DQKtwMGFDgLz0rmTDUnuxoGtW34gNpQqIpwh3OT11JJl',
        'signin$UserName'=>$username ,
        'signin$UserPass'=>$password ,
        'signin$Button1.x'=>42,
        'signin$Button1.y'=>17
        );
$postData = http_build_query($post);
编辑2

完整标题。。。只是注意到它也有饼干

POST http://www.bangme.net/signin.aspx HTTP/1.1
Host: www.bangme.net
Connection: keep-alive
Content-Length: 391
Cache-Control: max-age=0
Origin: http://www.bangme.net
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.142 Safari/535.19
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://www.bangme.net/signin.aspx
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: ASP.NET_SessionId=1jqjwt45h0gpzb452rvrcu55; __utma=178887351.705741064.1333412926.1333412926.1333412926.1; __utmc=178887351; __utmz=178887351.1333412926.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); __utmb=178887351

__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwULLTEyMzUzNDExNjFkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYCBRdzaWduaW4kUmVtZW1iZXJDaGVja2JveAUOc2lnbmluJEJ1dHRvbjFA3HLFp6KEVYvii7p6PjecyYMsaw%3D%3D&__EVENTVALIDATION=%2FwEWBQL%2FxuPVDgLCoo75CQKoiOf4DQKtwMGFDgLz0rmTDUnuxoGtW34gNpQqIpwh3OT11JJl&signin%24UserName=test&signin%24UserPass=test&signin%24Button1.x=42&signin%24Button1.y=17
编辑3

改变

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);

谢谢


:)

谢谢你,爸爸,你能告诉我如何实现你在C中描述的参数吗?以及你是如何确定这些参数是必需的?这就是你点击submitOk时发布的内容,所以我一直看到一个“object moved here”(对象移动到此处)屏幕,所以我添加了一些我在其他stackoverflow帖子中发现的与此相关的内容。我现在得到该网站的我们太忙了,请在30分钟后重试页面显示,但我不在此脚本之外。你提到饼干,还有什么我需要做的吗?我已经用我当前的代码编辑了我上面的帖子啊,在你更新你的lol之前,我没有更新我的原始帖子。谢谢你,爸爸,你能告诉我如何实现你在C中描述的参数吗?以及你如何确定这些参数是必需的?这就是你点击submitOk时发布的内容,所以我一直看到一个“objectmovedthere”屏幕,所以我添加了一些我从其他stackoverflow帖子中找到的关于这个的东西。我现在得到该网站的我们太忙了,请在30分钟后重试页面显示,但我不在此脚本之外。你提到饼干,还有什么我需要做的吗?我已经用我目前的代码编辑了上面的帖子。哈哈,在你更新你的帖子之前,我没有更新我原来的帖子。谢谢你的回复,它帮助了我原来的问题。:)谢谢你的回答,这有助于我原来的问题。:)