.NET微信模拟登录及{base_resp:{ret:-4,err_msg:nvalid referrer}}的解决办法

12年的时候写了些关于微信开发的内容,当时看好这个东西,可惜当时腾讯开放的权限太少,之后的一年多时间没有太关注了。

现在又要重新开始微信开发的阵容了,微信只是个入口,微网站才是趋势。

我是个水货,所以写的都是比较入门的,给初学者点启发用的。

这里有3个文件,一个页面展示(不贴代码了,就两个文本框和提交按钮)和后台代码,一个方法类,一个实体类

后台代码

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

protected
void btnConfirm_Click(object
sender, EventArgs e)

{

    string
name = txtName.Text;

    string
pass = txtPass.Text;

    if
(WeiXinLogin.ExecLogin(name, pass))

    {

        Response.Write("登陆成功");

        Response.Redirect("SendMessage.aspx");

        

    }

    else

    {

        Response.Write("登陆失败");

    }

}

方法类

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

public
static bool
ExecLogin(string
name, string
pass)

    {

        bool
result = false;

        string
password = GetMd5Str32(pass).ToUpper();

        string
padata = "username="
+ name + "&pwd="
+ password + "&imgcode=&f=json";

        string
url = "https://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN";//请求登录的URL

        try

        {

            CookieContainer cc = new
CookieContainer();//接收缓存

            byte[] byteArray = Encoding.UTF8.GetBytes(padata); // 转化

            HttpWebRequest webRequest2 = (HttpWebRequest)WebRequest.Create(url);  //新建一个WebRequest对象用来请求或者响应url

            webRequest2.CookieContainer = cc;                                      //保存cookie 

            webRequest2.Method = "POST";                                          //请求方式是POST

            webRequest2.ContentType = "application/x-www-form-urlencoded";       //请求的内容格式为application/x-www-form-urlencoded

            webRequest2.Referer = "https://mp.weixin.qq.com/";//request的referer地址,网络上的版本因为这句没写所以会出现invalid referrer

            webRequest2.ContentLength = byteArray.Length;

            Stream newStream = webRequest2.GetRequestStream();           //返回用于将数据写入 Internet 资源的 Stream。

            // Send the data.

            newStream.Write(byteArray, 0, byteArray.Length);    //写入参数

            newStream.Close();

            HttpWebResponse response2 = (HttpWebResponse)webRequest2.GetResponse();

            StreamReader sr2 = new
StreamReader(response2.GetResponseStream(), Encoding.Default);

            string
text2 = sr2.ReadToEnd();

            HttpContext.Current.Response.Write("text2:"
+ text2 + "<br/>");

            //此处用到了newtonsoft来序列化

            WeiXinRetInfo retinfo = Newtonsoft.Json.JsonConvert.DeserializeObject<WeiXinRetInfo>(text2);

            string
token = string.Empty;

            if
(retinfo.redirect_url != null
&& retinfo.redirect_url.Length > 0)

            {

                token = retinfo.redirect_url.Split(new
char[] { ‘&‘
})[2].Split(new
char[] { ‘=‘
})[1].ToString();//取得令牌

                LoginInfo.LoginCookie = cc;

                LoginInfo.CreateDate = DateTime.Now;

                LoginInfo.Token = token;

                result = true;

            }

        }

        catch
(Exception ex)

        {

            HttpContext.Current.Response.Write("ex:"
+ ex.ToString());

            //throw new Exception(ex.StackTrace);

        }

        return
result;

    }

实体类

?





1

2

3

4

5

6

7

8

9

10

11

public
class WeiXinRetInfo//网络上是另一个版本,微信更新后换结构了

{

    public
base_resp base_resp { get; set; }

    public
string redirect_url { get; set; }

}

public
class base_resp

{

    public
string ret { get; set; }

    public
string err_msg { get; set; }

}

这样就完成了微信的模拟登录~ 
接下来的其他步骤如获取登陆用户信息,群发信息之类的如果遇到问题再记录,没问题的话不更新了。

参考文章

http://bbs.csdn.net/topics/390670160

http://www.cnblogs.com/dyllove98/p/3165814.html

.NET微信模拟登录及{base_resp:{ret:-4,err_msg:nvalid
referrer}}的解决办法,布布扣,bubuko.com

.NET微信模拟登录及{base_resp:{ret:-4,err_msg:nvalid
referrer}}的解决办法

时间: 2024-10-24 23:08:10

.NET微信模拟登录及{base_resp:{ret:-4,err_msg:nvalid referrer}}的解决办法的相关文章

有关百度一键分享链接到微信朋友圈无法打开网页,报404错误的解决办法,from=timeline&amp;isappinstalled=0,和伪静态规则有关

最近有好友反映用百度一键分享,分享网页链接到微信朋友圈的时候,发现链接无法打开,提示无法找到该页404错误,同样分享到QQ.微博等链接 能正常访问,这么明显的错误,百度和腾讯应该不会忽略吧. 接报后,我专门分析了一遍他公司的网站,确实是微信朋友圈无法分享网站链接.但是通过微信扫一扫能正常浏览网页,点击分享到朋友圈后,在  从朋友圈去访问的时候,提示无法找到该页,报404错误. 经反复检测,排除了分享代码的问题,和服务器配置问题.我开始怀疑伪静态规则,开启URL重写造成的,我关掉了伪静态,让网页形

联合登录,请求令牌时对方返回空的解决办法

最近做了一个联合登录,在本地测试通过,但是一上线就报错.后来通过日志信息观察到,去请求令牌时,对方返回了空.现在把修改前后的请求方法写在下面: 之前,请求不到令牌的写法: private static JSONObject getJsonFromUrl(String urlStr) { // org.apache.http.client.HttpClient HttpClient httpClient = new DefaultHttpClient(); // org.apache.http.c

Selenium登录126邮箱,定位不到账号输入框解决办法

用firebug去定位126邮箱登录页面的账号密码输入框,查看元素时发现ID每次都是变动的,不能用ID定位 使用xpath定位,发现每次定位都会失败,后来发现这个登录的账号密码输入框,是嵌套在表单iframe中,所以定位时,要先进入iframe里面才能正确定位 iframe/frame的定位方式有3种,一是通过ID,而是通过name,三是xpath 例如: switch_to_frame(id): switch_to_frame(name): 若是没有ID和name,那么只能通过xpath方式定

Mayi_Selenium登录126邮箱,定位不到账号输入框解决办法

转自:https://www.cnblogs.com/wuhl-89/p/7778463.html 查看元素发现id为动态,所以不选择以id定位. 使用xpath路径定位,每次获取元素都失败,最后网上查了下发现其嵌套在表单frame/iframe中,所以我们先要进入frame/iframe中,然后再定位 frame/iframe的定位方式有3种,一是通过id:二是通过name:三是xpath 例:switch_to_frame(id)  : 或是  switch_to_frame(name):若

安装vncserver后导致Ubuntu循环登录进入不了桌面的问题原因及解决办法

原文连接:https://blog.csdn.net/XCCCCZ/article/details/92160058 需要把home/<user>下的.Xauthority 和 .ICEauthority的owner, group都改成普通用户才行. sudo chown username<如何harris> .Xauthority sudo chown username<如何harris> .ICEauthority 原文地址:https://www.cnblogs.

Python爬虫之模拟登录微信wechat

不知何时,微信已经成为我们不可缺少的一部分了,我们的社交圈.关注的新闻或是公众号.还有个人信息或是隐私都被绑定在了一起.既然它这么重要,如果我们可以利用爬虫模拟登录,是不是就意味着我们可以获取这些信息,甚至可以根据需要来对它们进行有效的查看和管理.是的,没错,这完全可以.本篇博主将会给大家分享一下如何模拟登录网页版的微信,并展示模拟登录后获取的好友列表信息. 微信模拟登录的过程比较复杂,当然不管怎么样方法都是万变不离其宗,我们还是使用fiddler抓包工具来模拟登录的过程.好了,下面让我们一步一

curl 模拟登录微信公众平台带验证码

这段时间一直写个项目, 从切图到前端到后台都要搞定,真tm累. 今天下午手残,不停用错误的密码去模拟登录微信公众平台,结果后来出现验证码,瞬间悲剧(菜鸟从来没搞过带验证码的). 研究了一下,发现其实很简单,直接把生成的二维码图片拉过来,让用户自己输入,再提交一遍表单即可.其实中间还是有些坑,比如生成验证码的时候,要把cookie保存下,登录的时候要带上这个cookie,要不然会总是提示需要验证码. 客户端: 1 <body> 2 <form> 3 <p><inpu

微信小程序&lt;web-view&gt;出现{&quot;base_resp&quot;:{&quot;ret&quot;:-1}}

最近在使用小程序<web-view>这个标签加载一个https网页的时候出现了{"base_resp":{"ret":-1}}这一个问题 搞了好久~后来才发现是没把不校验合法域名.web-view(业务域名).TLS版本及HTTPS证书这一个选项选上, 只要把这个勾上了显示就正常了. 使用<web-view>这个标签需要在小程序管理后台设置业务域名,登录后台后找到设置-开发设置-业务域名,然后把你需要加载的域名添加进去 原文地址:https:

Python学习---模拟微信网页登录180410

WEB微信 网页登录的猜想: a. 访问页面出现二维码 b. 长轮询监听是否已经扫码并且点击确认 c. 如何进行会话保持 d. 如何获取用户列表 e. 如何发送消息(接收消息) 过程:访问微信官网[https://wx.qq.com/]  --> 打开微信[已登录]扫一扫  -->  扫描网页图片 App内获取数据都是通过RUL进行获取的 长轮询: 发送一次请求后,就一直在等待消息的返回,如果超过规定时间后,就结束该请求,发送下次的请求. 轮 询: 定时的不停的交替的发送请求到服务器,不等待消